• SpringBoot2自动配置2


    1、配置编写的Bean组件添加到容器中。

    方法:先准备两个JavaBean,在方法上标注@Bean注解即可(默认单实例组件)。在启动程序中打印IOC容器所有的组件名称,可以在控制台查看结果

    2、本身配置类也是IOC容器中的组件,默认也是单实例。

    配置在@Configuration(proxyBeanMethod = true),如果配置为true则IOC容器中的配置类组件是一个被增强了的代理对象

    而如果为false,则不是单实例对象。

     这个配置为true是应用在组件依赖的场景,会先去找容器中有没有宠物组件,有就自动给人传这个宠物。

     

    3、配置组件到容器中,除了上面的方法,还可以使用注解@Import

     

    在主程序获取组件名称并打印到控制台

     4、条件装配:满足指定条件才进行组件注入

    @Conditional以及派生注解如图:每个注解都代表了不同的功能


    当容器中有这个组件时,才。。 @ConditionalOnBean
    当容器中没有这个组件时, @ConditionalOnMissingBean

    当容器中有这个类时, @ConditionalOnClass
    当容器中没有这个类时, @ConditionalOnMissingClass

    当类路径中存在某个资源时, @ConditionalOnResource
    当是制定的Java版本号的时, @ConditionalOnJava

    当应用是一个Web应用的时, @ConditionalOnWebApplication
    当应用不是一个Web应用时, @ConditionalOnNotWebApplication

    当容器中指定的组件只有一个实例,或者多个实例下只有一个主实例@Primary标注, @ConditionalOnSingleCandidate
    当配置文件中配置了某个属性时, @ConditionalOnProperity

      在Intellij中如何打开这个注解的继承树,首先搜索注解

     

    条件装配示例1: 

        ~在配置类中将Bean对象注入注释

        ~在主程序中打印tom组件是否在容器中这个条件,返回的值为false

     

    最终期望的效果是:当user依赖pet的情况下,去判断如果容器中没有这个宠物,那么容器也不要去注册用户了。

     

     也可以配置在类上,当容器中存在tom组件时,这个类中的代码才会生效

     

    示例2:当容器中不存在某个组件时,才去装配其他组件

    5、如果公司使用的时beans.xml,那么我们怎么转换为注解配置的方式?SpringBoot并不会自动去识别beans.xml文件和把组件放到容器中。

      解决:在配置文件中导入Spring配置文件beans.xml

    @ImportResource("classpath:beans.xml")//导入Spring的配置文件

  • 相关阅读:
    struts的ognl.NoConversionPossible错误
    hibernate many-to-one
    向网页中插入百度地图
    hibernate多对一单向配置
    PHP+MySQL按时间段查询记录代码
    iis无法启动的解决办法-卸掉KB939373补丁
    跳转回上一页代码
    QQ在线客服代码
    SSH(Struts2 + Hibernate + Spring)嵌入 KindEditor(KE)
    php从数据库选取记录形成列表(首页调用)
  • 原文地址:https://www.cnblogs.com/Yi-ling/p/14442967.html
Copyright © 2020-2023  润新知