栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot 基础知识

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot 基础知识

**1.设置隐藏相关的文件**
Settings--Editor--File Types
*.mvn;*.gitignore;*.cmd;*mvnw;*.iml;

2.parent :继承spring-boot-starter-parent的依赖管理,控制版本与打包等内容。
  dependencies: 项目具体依赖,这里包含了spring-boot-starter-web用于实现HTTP接口(该依赖中包含了Spring MVC),
               官网对它的描述是:使用Spring MVC构建Web(包括RESTful)应用程序的入门者,使用Tomcat作为默认嵌入式容器。
               spring-boot-starter-test用于编写单元测试的依赖包
  build: 构建配置部分。默认使用了spring-boot-maven-plugin,配合spring-boot-starter-parent就可以把Spring Boot应用打包成JAR来直接运行。

3.运行jar包
  java -jar "项目打包成jar包的名称"
  
4.自定义banner
  springboot banner: https://www.bootschool.net
  把banner.txt放在resources包下。
  
5.原理探索
  自动配置:
    pom.xml   spring-boot-dependencies: 核心依赖在父工程中。
              我们在写或者引入一些springboot依赖的时候,不需要指定版本,因为有这些版本仓库
    启动器
               
                   org.springframework.boot
                   spring-boot-starter-web
               
               说白了就是springboot的启动场景。
               比如spring-boot-starter-web,就会帮我们自动导入web环境所有的依赖!
               springboot会将所有的功能场景,都变成一个个的启动器
               我们需要使用什么功能,就只需要找到对应的启动器就可以“starter”。
               (https://docs.spring.io/spring-boot/docs/current/reference/html/using.html#using.build-systems.starters)
    主程序
               @SpringBootApplication : 标注这个类是一个Spring boot的应用:启动类下的所有资源被导入
               注解
                  @SpringBootConfiguration: springboot的配置
                    @Configuration: spring配置类
                      @Component: 说明这也是一个Spring组件                                
                  @EnableAutoConfiguration: 自动配置
                    @AutoConfigurationPackage: 自动配置包
                      @Import(AutoConfigurationPackages.Registrar.class): 自动配置”包注册“
                    @Import(AutoConfigurationImportSelector.class): 自动配置导入选择
                    
               META-INF/spring.factories: 自动配置的核心文件(在spring-boot-autoconfigure包下)
               
               这么多自动配置为什么有的没有生效,需要导入对应的start才能有作用?
               核心注解: @ConditionalOnXXX: 如果里面的条件都满足,才会生效。
    结论: springboot所有自动配置都是在启动的时候扫描并加载:spring.factories 所有的自动配置类都在这里面,
         但是不一定生效,要判断条件是否成立,只有导入了对应的start,就会对应的启动器了,有了启动器,我们自动
         装备就会生效,然后就配置成功!
         
         1.springboot在启动的时候,从类路径下 /META-INF/spring.factories 获取指定的值
         2.将这些自动配置的类导入容器,自动配置就会生效,帮忙进行自动配置
         3.以前我们需要自动配置的东西,现在spring boot帮我们做了
         4.整合JavaEE,解决方案和自动配置的东西都在spring-boot-autoconfigure-2.2.0.RELEASE.jar这个包
         5.它会把所有需要导入的组件,以类名的方式返回,这些组件就会被添加到容器;
         6.容器中也会存在非常多的xxxAutoConfiguration的文件,就是这些类给容器中导入了这个场景需要的所有组件
           并自动配置。
         7.有了自动配置类,免去了我们手动编写配置文件的工作。
         
6.SpringApplication
  推断应用的类型是普通的项目还是Web项目
  查找并加载所有可用初始化器,设置到initializers属性中
  找出所有的应用程序监听器,设置到listeners属性中
  推断并设置main方法的定义类,找到运行的主类
  
7.配置文件
  application.properties   语法结构:key=value
  application.yml   语法结构:key:空格 value 
  
8.
   
         org.springframework.boot
         spring-boot-configuration-processor
   
  Spring Boot配置注解执行器没有配置”,配置注解执行器的好处是什么。
  配置注解执行器配置完成后,当执行类中已经定义了对象和该对象的字段后,
  在配置文件中对该类赋值时,便会非常方便的弹出提示信息。
  
9.@ConfigurationProperties(prefix = "person")
  将配置文件中配置的每一个属性的值,映射到这个组件中;
  告诉spring boot将本类中的所有属性和配置文件中相关的配置进行绑定
  参数prefix = ”person“ 将配置文件中的person下面的所有属性一一对应
  只有这个组件是容器中的组件,才能使用容器提供的@ConfigurationProperties功能  
  
10.@PropertySource(value = "classpath:jdbc.properties")
   @Value("{name}")
   绑定自己配置文件的属性的值
   使用properties配置文件的时候,可能会发生乱码,需要在idea中设置编码格式为UTF-8 
   
11.yal中还可以使用随机数
   dog:
     age: 11${random.uuid}
     name: ${person.hello:hello}
     
12.松散绑定:在yml中写的last-name,这个和lastName是一样的,-后面跟着的字母默认是大写的
   JSR303配置:可以在字段前增加一层过滤器验证,可以保证数据的合法性
   复杂类型封装:yml中可以封装对象,使用@value就不支持
   
13.JSR303校验
   
        org.springframework.boot
        spring-boot-starter-validation
   
   @Validated 开启数据校验
   
   @NotNull(message="不能为空")
   @Max(value=120,message="最大为120")
   @Email(message="邮箱格式错误")
   空检查
   @Null     验证对象是否为null
   @Notnull  验证对象是否不为null,无法检查长度为0的字符串
   @NotBlank 检查约束字符串是不是null,还有被trim的长度是否大于0,只对字符串,且会去掉前后空格
   @NotEmpty 检查约束元素是否为null 或者是empty
   Boolean检查
   @AssertTrue   验证Boolean对象是否为true
   @AssertFalse  验证Boolean对象是否为false
   长度检查
   @Size(min=,max=)  验证对象(Array、Colllection、Map、String)长度是否在给定的范围之内
   @Length(min=, max=)  验证字符串的长度是否在给定的范围之内
   日期检查
   @Past   验证Date 和Calendar对象是否在当前时间之前
   @Future 验证Data 和Calendar对象是否在当前时间之后
   @Pattern 验证String对象是否符合正则表达式的规则:正则表达式
   
14.多环境配置及配置文件位置(优先级)
   application.yml
   file:./config/
   file:./
   classpath:/config/
   classpath:/ 
   
15.application.properties
   application-dev.properties
   application-test.properties
   #springboot的多种环境配置:可以选择激活哪一个配置文件
   spring.profiles.active=test
   
16.application.yml
   server:
      port: 8081
   spring:
      profiles:
         active: dev
   ---
   server:
      port: 8082
      spring:
         profiles: dev
   ---
   server:
      port: 8083
      spring:
         profiles: test
         
17.spring-boot-autoconfigure:2.6.6
   自动装配原理:
   1)SpringBoot启动会加载大量的自动配置类
   2)我们看我们需要的功能有没有在SpringBoot默认写好的自动配置类当中
   3)我们再来看这个自动配置类中到底配置了哪些组件(只要我们要用的组件存在其中,我们就不需要再手动配置了)
   4)给容器中自动配置类添加组件的时候,会从properties类中获取某些属性。
      我们只需要在配置文件中指定这些属性的值即可
   xxxAutoConfiguration:自动配置类;给容器中添加组件
   xxxProperties:封装配置文件中相关属性
   
18.debug: true
   来查看哪些自动配置类生效,哪些没有生效!
   Positive matches:自动配置类启用的,正匹配
   Negative matches:没有启动,没有匹配成功的自动配置类,负匹配
   Unconditional classes:没有条件的类
   
19.WebMvcAutoConfiguration
   classpath:/META-INF/resources/webjars    localhost:8080/webjars
   classpath:/resources/                    localhost:8080
   classpath:/static/
   classpath:/public/
   classpath:/**
   
20.在templates目录下的所有的页面,只能通过controllerl来跳转

21.图标定制
   关闭默认图标 spring.mvc.favicon.enable=false
   在resources包下的public中引入 favicon.ico 文件
   
22.模板引擎
   spring boot推荐的是Thymeleaf
   prefix="classpath:/templates/"
   suffix=".html"
   引入头文件: 
   
23.扩展 SpringMvc
   @Configuration,实现WebMvcConfigure
   SpringBoot在自动配置很多组件的时候,先看容器中有没有用户自己配置的(如果用户自己配置@bean)
   如果有就用用户配置的,如果没有就用自动配置的,如果有些组件可以存在多个,比如我们的视图解析器,就将用户配置的
   和自己默认的组合起来!
   如果我们想扩展使用SpringMVC,我们要做的就是编写一个@Configuration注解类,并且类型为WebMvcConfigurer,
   还不能标注@EnableWebMvc注解,我们去自己编写一个
   新建一个包叫config,写一个类MyMvcConfig
   @EnableWebMvc  //导入了一个类,DelegatingWebMvcConfiguration,继承了WebMvcConfigurationSupport 从容器中获取所有的webmvcconfig;
   WebMvcAutoConfiguration中@ConditionalOnMissingBean({WebMvcConfigurationSupport.class})只有这个类不存在的时候才生效

   在springboot中,有非常多的xxx Configuration 帮助我们进行扩展配置,只要看见这个东西,我们就要注意了!
   自定义配置格式化
   spring.mvc.data-format= 

   
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/820902.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号