zoukankan      html  css  js  c++  java
  • 品 SpringBootApplication 注解源码


    @SpringBootApplication
    由以下三个注解构成:
    @SpringBootConfiguration
    @EnableAutoConfiguration
    @ComponentScan
    一:
    @SpringBootConfiguration  主要由  @Configuration 注解实现
    @Configuration 等同于  beans.xml
    @Bean  对于那些熟悉Spring的<beans/>XML配置的人来说,
    1,@Bean  注释与<bean/>元素扮演的角色相同
    2,给容器中注册一个Bean;类型为返回值的类型,id默认是用方法名作为id
    3,可以给@Bean设置value来修改id,比如@Bean("personAlias")
    4,可以在@bean中指定初始化和销毁方法
    例:
    @Bean(value = "bean1",initMethod = "init", destroyMethod = "destroy")
    等同于
    <bean id="bean1" class="com.java.model.Person"  init-method="init" destroy-method="destroy"></bean>
    二:
    开发中会经常使用包扫描,只要标注了@Controller、@Service、@Repository,@Component 注解的类会自动加入到容器中,ComponentScan有注解和xml配置两种方式。
    创建一个配置类,在配置类上添加 @ComponentScan 注解。该注解默认会扫描该类所在的包下所有的配置类,相当于之前的 <context:component-scan>。
    约定优于配置:
    “告诉Spring到哪里搜索”称为组件扫描。你必须定义了需要扫描的包,为包定义组件扫描后,Spring将搜索包及其所有子包以获取组件/ bean。
    如果你的其他包层次结构位于使用@SpringBootApplication标注主应用程序下方,则隐式组件扫描将自动涵盖。也就是说,不要明确标注@ComponentScan,Spring Boot会自动搜索当前应用主入口目录及其下方子目录。
    如果其他包中的bean /组件不在当前主包路径下面,,则应手动使用@ComponentScan 添加
    如果使用了@ComponentScan ,那么Spring Boot就全部依赖你的定义,如果定义出错,会出现autowired时出错,报a bean of type that could not be found错误,让你很恼火哦。
     

    @Component表示一个类可能是创建bean的候选者。就像举手一样。
    @ComponentScan正在搜索组件包。试图找出谁都举起手来。

    1、@Service用于标注业务层组件
    2、@Controller用于标注控制层组件(如struts中的action)
    3、@Repository用于标注数据访问组件,即DAO组件.
    4、@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。   

    三:
    @EnableAutoConfiguration  主要由 @Import 注解实现
    借助@Import的支持,收集和注册特定场景相关的bean定义

    我理解就是要开船了,AutoConfigurationImportSelector根据名单把水手,舵手、安检员都统一叫过来各就各位。帮助SpringBoot应用将所有符合条件的@Configuration配置都加载到当前SpringBoot创建并使用的IoC容器。就像一管理员一样
    借助于Spring框架原有的一个工具类:SpringFactoriesLoader的支持,@EnableAutoConfiguration可以智能的自动配置功效才得以大功告成!
  • 相关阅读:
    北京东城区社保转出业务个人办理图解流程,需要的朋友可以参考
    微信自定义菜单代码实现
    那你就是不对称加密了
    数字签名和数字认证
    微信认证开发教程
    Eclipse配置Maven
    php随笔
    让SAE下的wordpress支持文件上传
    HTTP Header 详解
    浅谈JS DDoS攻击原理与防御
  • 原文地址:https://www.cnblogs.com/xichji/p/11267927.html
Copyright © 2011-2022 走看看