Spring Boot的注解及其相关作用

SpringBootApplication注解

当我们启动一个SpringBoot应用而不使用@SpringBootApplication注解时,会报错

Spring Boot 的Application和Controller看起来没有直接的关联关系,其实是通过各种注解把各个组件有机的组合起来,@SpringBootApplication注解是多个注解的结合体

@SpringBootApplication标识着一个配置类(@SpringBootConfiguration),声明了一个或者多个@Bean,并且会触发自动配置(@EnableAutoConfiguration)和组件扫描(@ComponentScan)

@SpringBootConfiguration注解

应用程序应该只使用一次@SpringBootConfiguration注解,大多数情况下使用继承它的@SpringBootApplication注解就可以了

@Configuration注解

这是Spring Context框架提供的注解

表示一个类声明一个或多个@Bean方法,并且可以由Spring容器处理,以便在运行时为这些bean生成bean定义和服务请求,例如:

@Configuration
public class AppConfig {
    @Bean
    public MyBean myBean() {
        // instantiate, configure and return bean ...
    }
}

使用时声明一个AnnotationConfigApplicationContext:

AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
ctx.registerBean(AppConfig.class);
ctx.refresh();
MyBean myBean = ctx.getBean(MyBean.class);
System.out.println(myBean.toString());

具体代码如下,@Configuraton的详细使用参考Spring Context的API文档,包名org.springframework.context.annotation

 EnableAutoConfiguration注解

EnableAutoConfiguration

doc文档翻译

启用Spring应用程序上下文的自动配置,尝试猜测和配置您可能需要的bean。自动配置类通常基于类路径和定义的bean来应用。例如,如果类路径上有tomcat-embedded.jar,则可能需要一个TomcatServletWebServerFactory(除非定义了自己的ServletWebServerFactory bean)。
当使用SpringBootApplication时,上下文的自动配置是自动启用的,因此添加这个注释没有额外的效果。

自动配置试图尽可能地智能化,当您定义更多自己的配置时,它就会后退。您总是可以手动排除()您永远不想应用的任何配置(如果您没有访问这些配置的权限,则使用exclude())。您还可以通过spring.autoconfigure排除它们。排除属性。在注册了用户定义bean之后,总是会应用自动配置。

使用@EnableAutoConfiguration注释的类包(通常通过@SpringBootApplication)具有特定的意义,通常用作“缺省值”。例如,它将用于扫描@Entity类。通常建议将@EnableAutoConfiguration(如果不使用@SpringBootApplication)放在根包中,以便可以搜索所有子包和类。

自动配置类是常规的Spring配置bean。它们是使用SpringFactoriesLoader机制定位的(针对该类进行监控)。通常,自动配置bean是@Conditional核心注解) bean(通常使用@ConditionalOnClass和@ConditionalOnMissingBean注释)。

 

 

原文地址:https://www.cnblogs.com/fubinhnust/p/11931197.html