首页 > 编程语言 > 详细

spring boot自动配置

时间:2020-10-18 16:45:02      阅读:33      评论:0      收藏:0      [点我收藏+]

spring boot的基本配置介绍

pom.xml

  • spring-boot-dependencies:核心依赖在父工程中!

  • 引入spring-boot,不需要指定版本,存在版本仓库

spring-boot的启动器

<dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-web</artifactId>
</dependency>

主程序

@SpringBootApplication
public class SpringbootApplication extends WebMvcConfigurerAdapter {
   public static void main(String[] args) {
       SpringApplication.run(SpringbootApplication.class, args);
  }
}
  • @SpringBootApplication:标注这个类是一个springboot应用,启动类下所有资源被导入

 

我们点开@SpringBootApplication

@Sp@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
   excludeFilters = {@Filter(
   type = FilterType.CUSTOM,
   classes = {TypeExcludeFilter.class}
), @Filter(
   type = FilterType.CUSTOM,
   classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {

 

  • @SpringBootConfiguration:spring-boot的配置

    • //点开SpringBootConfiguration
      @Target({ElementType.TYPE})
      @Retention(RetentionPolicy.RUNTIME)
      @Documented
      @Configuration
      public @interface SpringBootConfiguration {
         @AliasFor(
             annotation = Configuration.class
        )
         boolean proxyBeanMethods() default true;
      }
      ?
    • @Configuration:pring配置类

    • @Compnent:也是spring boot 的一个组件

     

  • @EnableAutoConfiguration:自动配置

    • @Target({ElementType.TYPE})
      @Retention(RetentionPolicy.RUNTIME)
      @Documented
      @Inherited
      @AutoConfigurationPackage
      @Import({AutoConfigurationImportSelector.class})
      public @interface EnableAutoConfiguration {
         String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";
      ?
         Class<?>[] exclude() default {};
      ?
         String[] excludeName() default {};
      }
      ?
    • @AutoConfigurationPackage:自动配置包

    • @Import({AutoConfigurationImportSelector.class}):自动配置导入选择器

超多的自动配置为什么没有生效,需要导入对应的start才能生效,因为注解@ConditionalOnXXX(核心注解):如果这里面的条件满足,配置才会生效。不导入@ConditionalOnXXX(核心注解)下回报红。

结论:所有的springboot配置都是在启动的时候扫描并加载:spring.factory ,所有的自动配置类都在spring.factory都在里面,

但是不一定生效,因为注解@ConditionalOnXXX,要判断它的条件是否成立,只需要导入对应的start,就有对应的启动器,我们自动装配生效,配置成功!!!!

  • springboot启动时,从类路径/MATA-INF/spring.factory获取指定值

  • 然后将这些自动配置类导入容器,自动配置就会生效,进行自定配置

  • 之前自配的东西,springboot帮我们做了

  • 整合java ee,解决方案和自动配合的东西都在spring-boot-autoconfigure-2.2.0 Relesaes .jar包

  • 需要的组件,以类名的方式返回,这些组件就会添加到容器中

  • 容器存在许多xxxautoConfiguraion(@Bean)就是这些给容器导入了场景所需要的组件,并进行自动配置@Configguration ,javaConfig

spring boot自动配置

原文:https://www.cnblogs.com/tianjin/p/13834396.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!