本文介绍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)通过改变容器环境参数

最新文章

  1. JavaScript 写计算器改进版
  2. 初试Scala解析XML
  3. iso 培训笔记
  4. xfire配置(java中的webservice)
  5. 安装percona-xtrabackup一直提示依赖冲突的一个解决办法
  6. 一个高度压缩的bit位图字典的实现
  7. Web 站点的水平扩展和垂直扩展 (译文)
  8. awr报告基本操作
  9. Learning BSD.sys/queue.h
  10. H - Partial Tree HDU - 5534 (背包)
  11. Multiple plot function
  12. MySQL出现too many connections(1040)错误解决方法
  13. <a>超链接用作下载
  14. Redux学习(3) ----- 结合React使用
  15. c++ 面试题(海量数据篇)
  16. git常用命令图
  17. 【转载,整理】Linux性能监控
  18. C++ sort函数用法 C中的qsort
  19. angular.js的依赖注入解析
  20. [翻译] AFSoundManager

热门文章

  1. 【Tool】---SVN的超级简单并具体得使用介绍
  2. 树上点分治 poj 1741
  3. Redis 分布式锁的正确实现方式( Java 版 )
  4. python爬虫——requests库使用代理
  5. Airtest入门篇
  6. 盘它!!一步到位,Tensorflow 2的实战 !!LSTM下的股票预测(附详尽代码及数据集)
  7. Activiti定时任务
  8. 8.JavaSE之变量、常量、作用域
  9. 「 从0到1学习微服务SpringCloud 」01 一起来学呀!
  10. Postwoman-接口测试工具