springboot的注解

@springbootapplication注解标注在类中,这个类作为spring boot的主配置类

运行spring boot需要运行这个类的main方法。

@SpringBootApplication
public class FirstApp {
    public static void main(String args[]) {
        //spring应用启动起来
        SpringApplication.run(FirstApp.class, args);
    }

}

按着ctrl点击@springbootapplication

会看到以下一系列注解。

@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配置

     点击@spring boot configuration ,会跳转到这个类    

 @Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
public @interface SpringBootConfiguration {

}

 @configuration: 配置类中标注这个注解

 用配置类代替-------配置文件;继续点击@configuration,会跳转到

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Configuration {
...
}

配置类也是容器的一个组件,@Component

@EnableAutoConfiguration:开启自动配置功能
点击这个配置,看到跳转到另一个类中,找到这些配置
以前需要配置的,spring boot帮助我们配置,开启自动配置功能。需要配置@EnableAutoConfiguration
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {
}

 看到@AutoConfigurationPackage:自动配置包,点击这个注解会看到

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@Import(AutoConfigurationPackages.Registrar.class)
public @interface AutoConfigurationPackage {

}
这个就是spring的底层注解
按住ctrl点击Registrar跳转到

 metadata是注解的原信息。

@Import(AutoConfigurationPackages.Registrar.class)
将主配置类,也就是@springbootapplication配置的类的所在包及下所有自包所有组件扫描到spring容器中。


  @Import(AutoConfigurationImportSelector.class) 导入包选择器。

将所有需要导入的组件以全类名的方式返回,这些组件就会被添加到容器中

会给容器中导入非常多的自动配置类(xxxAutoConfiguration),就是给容器中导入这个场景所需要的所有组件,并配置好这些组件;

有了自动配置类,免去了手动配置和注入组件;

J2EE整体整和解决方案和自动配置都在spring-boot-autoconfiguration-2.0.1.release.jar

原文地址:https://www.cnblogs.com/hamish26/p/12157761.html