zoukankan      html  css  js  c++  java
  • 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注释)。

     

     

  • 相关阅读:
    煲鸡汤流程
    面向对象
    程序员英语学习思维导图
    百度通配符学习
    面向对象
    IO学习
    理解java的三大特性之继承
    重载(overload)、覆盖(override)、隐藏(hide)的区别
    2018年值得关注的10大JavaScript动画库
    小知识点总结
  • 原文地址:https://www.cnblogs.com/fubinhnust/p/11931197.html
Copyright © 2011-2022 走看看