请谈谈springboot中的自动配置,springboot三种配置方式

  请谈谈springboot中的自动配置,springboot三种配置方式

  00-1010 1自动配置底层分析1.1自动配置注释分析1.2修改默认配置1.3摘要1.4最佳实践2开发技巧2.1 Lombok简化开发2.2伪热更新2.3创建Spring Initailizr项目

  

目录

 

  

1 自动配置底层分析

@SpringBootApplication注释是SpringBoot的核心注释,是以下三个注释的总和。

 

  @SpringBootConfiguration

  批注底部有一个@Configuration批注,表示当前类是一个配置类。

  @EnableAutoConfiguration该注释由以下两个注释组成。

  @AutoConfigurationPackage:底层使用@Import({Registrar.class})在容器中注册组件,Registrar.class获取主程序所在的包并导入该包下的所有组件,间接说明了SpringBoot的默认包扫描规则:主应用程序所在的包以及该包的所有子包都会被扫描。

  @ import(autoconfigurationimportselector . class):autoconfigurationimportselector . class下有一个selectImports方法,在该方法中,getAutoConfigurationEntry内的GetCandidateConfigurations方法用于获取哪些组件需要注册,getCandidateConfigurations方法默认使用springfactorisloader . loadfactorynames内层的loadSpringFactories方法中的get resources(" meta-INF/spring.factors ")扫描jar包meta-INF/spring . factors下当前系统中的所有文件。发现在spring-boot-auto configure-2 . 3 . 4 . release . jar包中也找到了meta-INF/spring.factors文件,文件中有一个EnableAutoConfiguratio配置项,它杀死了Spring-boot一启动就会加载到容器中的所有配置类。虽然在我们的127个场景中,当自动配置启动时,所有xxxxAutoConfiguration都是默认加载的,但它最终是根据条件汇编规则(@Conditional)进行配置的。

  @ComponentScan该注释定义了包扫描的规则。

  00-1010 Spring Boot默认会配置底层的所有组件,但是如果用户自己配置,用户优先。使用@ConditionalOnMissingBean批注来确定容器中是否存在该组件,然后使用默认类来配置它。

  

1.1 自动配置注解解析

跳趾首先传球

 

  效配置文件中debug=true开启自动配置报告,其中Positive(生效组件)、Negative(不生效组件)以及会显示不生效的原因是什么没有匹配到修改配置项

  参考文档:SpringBoot可能会用到的所有配置项按照前面的定制化方式自己分析组件修改

  @Bean、@Component……注解

  …………业务流程

  

 

  

2 开发小技巧

 

  

2.1 Lombok简化开发

第一步: 导入依赖(由于starter启动器中已经配置了版本,于是可以不去再次进行设置)

 

  

<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId></dependency>

第二步: 搜索安装lombok插件

 

  

 

  第三步: 使用注解进行开发

  JavaBean的注解 使用注解并不会直接自动生成代码,而是在编译期间将注解的方法补上。而且如果需要使用多参但不全构造器的话,没有注解可以完成,需要自己在源码上手写

  @NoArgsConstructor: 无参构造器@AllArgsConstructor: 全参构造器@ToString: 全参数的toString方法@Data: getter和setter方法

 

  生成日志

  类上加注解@Slf4jlog.info方法打印日志

 

  

 

  

2.2 伪热更新

第一步: 导入依赖

 

  

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId><optional>true</optional></dependency>

第二步: 使用热更新功能,在项目源码中更新了代码,不需要重启服务器,直接使用Ctrl+F9刷新项目信息,就可以使用更新之后的代码了。静态页面的改变使用Ctrl+F9,就是在服务器中直接更新页面信息,其他的信息改变就相当于使用按钮重启项目。如果想要实现不需任何操作就实时更新的话可以使用JRebel,但是缺点就是收费。

 

  

 

  

2.3 创建Spring Initailizr项目

  这个小技巧就是在使用IDEA的企业版开发的时候,直接创建一个springBoot项目,还可以自定义项目中所需要的技术,创建完成之后就会自动生成SpringBoot项目相应的主程序类、pom.xml文件等

 

  

 

  右键创建项目的时候选择Spring Initailizr,主要就是勾选自己需要的技术

  

 

  效果:

  

 

  到此这篇关于SpringBoot2零基础到精通之自动配置底层分析及小技巧的文章就介绍到这了,更多相关SpringBoot2 自动配置内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: