zoukankan      html  css  js  c++  java
  • Spring——自动装配(@Autowired/@Profile/底层组件)

    本文介绍Spring中关于自动装配的方法和规则,以及@Profile动态激活的用法和一个例子。

    一、@Autowired自动装配

    @Autowired注解可以加在构造器、属性、方法、方法参数上。

    1、自动装配规则

    默认优先按照类型去容器中找对应的组件,如果存在多个相同类型,再根据属性名称作为组件id去容器中查找。

    我们可以通过@Qualifier配合@Autowired指定要装配的组件的id

    也可以在组件上添加@Primary指定首选的bean

    @Autowired有一个属性required默认为true,表示一定需要这个组件,如果在容器中找不到对应组件,则会报错。

     在组件的有参构造方法中,会自动进行装配,不需要添加@Autowired注解。

    2、注意

    自动注入最好选择接口而非实现类,防止由于代理的原因出错

    二、XXXAware获取底层组件 

     

    比如其中的ApplicationContextAware,实现这个接口,就能够得到applicationContext并使用

    Red类实现了两个XXXAware接口,下面我们来进行测试

     

    容器启动后打印如下:

     

     说明在对象创建时,会调用接口规定的方法,使我们获取到底层组件

    三、@Profile动态激活切换组件

    1、注解标注位置

    可以添加在配置类或配置类中@Bean修饰的方法上。

     

    如果标在配置类中的@Bean方法上,则满足相应激活条件,才会注册对应的bean

    如果直接标在配置类上,满足激活条件可以使用这个配置类,否则配置类中的一切配置无效。

    2、激活方法

    1)通过添加虚拟机参数

    -Dspring.profiles.active="profile1,profile2"

    2)通过改变容器环境参数

  • 相关阅读:
    mysql存储过程
    Mysql中的触发器
    快速开始、环境搭建、修改包名、新建模块、正式部署
    windows下redis下载安装
    Windows10下mysql 8.0.19 安装配置方法图文教程
    IDEA中安装SVN
    常见页面报错
    Python AttributeError: 'Module' object has no attribute 'STARTF_USESHOWINDOW'
    如何编写一篇高质量的技术博文?学习本文的排名靠前大法
    Linux use apktool problem包体变大GLIBC2.14等问题
  • 原文地址:https://www.cnblogs.com/Unicron/p/12349728.html
Copyright © 2011-2022 走看看