zoukankan      html  css  js  c++  java
  • 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的配置文件

  • 相关阅读:
    #Laravel笔记# 使用SMTP发送邮件功能
    #Laravel笔记# 监听事件
    idea 常见问题
    python常见函数汇总
    双DNN排序模型:在线知识蒸馏在爱奇艺推荐的实践
    机器学习算法GBDT
    Hive表数据同步到es
    目标检测资料
    zeppelin的介绍与使用
    Java汉字获取拼音、笔划、偏旁部首
  • 原文地址:https://www.cnblogs.com/Yi-ling/p/14442967.html
Copyright © 2011-2022 走看看