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

Spring——自动装配(@Autowired/@Profile/底层组件)的更多相关文章

  1. Spring自动装配----注解装配----Spring自带的@Autowired注解

    Spring自动装配----注解装配----Spring自带的@Autowired注解 父类 package cn.ychx; public interface Person { public voi ...

  2. 【spring 注解驱动开发】spring自动装配

    尚学堂spring 注解驱动开发学习笔记之 - 自动装配 自动装配 1.自动装配-@Autowired&@Qualifier&@Primary 2.自动装配-@Resource& ...

  3. 20、自动装配-@Autowired&@Qualifier&@Primary

    20.自动装配-@Autowired&@Qualifier&@Primary 自动装配:Spring 利用依赖注入(DI),完成对IOC容器中各个依赖关系赋值 20.1 @Autowi ...

  4. Spring自动装配歧义性笔记

    Spring自动装配歧义性笔记 如果系统中存在两个都实现了同一接口的类,Spring在进行@Autowired自动装配的时候,会选择哪一个?如下: // 一下两个类均被标记为bean @Compone ...

  5. Spring系列七:Spring 自动装配

    相思相见知何日?此时此夜难为情. 概述 在Spring框架中,在配置文件中声明bean的依赖关系是一个很好的做法,因为Spring容器能够自动装配协作bean之间的关系.这称为spring自动装配. ...

  6. Spring 自动装配 Bean

    Spring3系列8- Spring 自动装配 Bean 1.      Auto-Wiring ‘no’ 2.      Auto-Wiring ‘byName’ 3.      Auto-Wiri ...

  7. spring 自动装配 default-autowire="byName/byType"

    <PRE class=html name="code">spring 自动装配 default-autowire="byName/byType"   ...

  8. Spring自动装配Bean详解

    1.      Auto-Wiring ‘no’ 2.      Auto-Wiring ‘byName’ 3.      Auto-Wiring ‘byType 4.      Auto-Wirin ...

  9. Spring自动装配(二)

    为什么Spring要支持Autowire(自动装配) 先写几个类,首先定义一个Animal接口表示动物: 1 public interface Animal { 2 3 public void eat ...

随机推荐

  1. 中国传统色JSON数据

    提取自中国色/colors.json 解析后存入数据库,导出插入语句chinese_colors.sql,提取码:5inu [ { "CMYK": [ 4, 5, 18, 0 ], ...

  2. dfs 序 欧拉序

    推荐博客 :https://www.cnblogs.com/stxy-ferryman/p/7741970.html DFS序其实就是一棵树顺次访问的结点的顺序,例如下面这棵树 它的 dfs 序就是 ...

  3. ORM _meta

    import os if __name__ == '__main__': os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'XadminDemon.se ...

  4. 9.Java三大版本以及JDK,JRE,JVM简单介绍

    Write Once,Run Anywhere. JavaSE:标准版(桌面程序,控制台开发...),是Java的基础和核心. JavaME:嵌入式开发(手机,小家电...),现在基本不用已经过时. ...

  5. Java入门 - 面向对象 - 06.接口

    原文地址:http://www.work100.net/training/java-interface.html 更多教程:光束云 - 免费课程 接口 序号 文内章节 视频 1 概述 2 接口的声明 ...

  6. .net core webapi搭建(2)跨域

    Core WebAPI中的跨域处理 在使用WebAPI项目的时候基本上都会用到跨域处理 Core WebAPI的项目中自带了跨域Cors的处理,不需要单独添加程序包 如图所示 修改 Configure ...

  7. 【Oracle】分区表详解

    此文从以下几个方面来整理关于分区表的概念及操作: 1.表空间及分区表的概念     2.表分区的具体作用     3.表分区的优缺点     4.表分区的几种类型及操作方法     5.对表分区的维护 ...

  8. 面试系列-面试官:你能给我解释一下javascript中的this吗?

    一.前言 关于javascript中的this对象,可能已经被大家说烂了. 即使是这样,我依然决定将这篇文章给水出来.毕竟全国在新型肺炎的影响下,公司没法正常复工. 除了刷刷手机,还是要适当的学习一下 ...

  9. 关于DockerFile组件,java8新特性的AWT组件,

    前段时间由于公司业务开发了App产品,产品用CocosCreator打出来的App, 用的时候,发现获取验证码,获取不到值,折腾了几天,一开始欢迎安装的jdk有问题,但是几次验证不是jdk的问题, 最 ...

  10. 简单的在jsp页面操作mysql

    ---恢复内容开始--- 上一篇讲了在DOS界面下操作mysql 现在我们来说说怎么在jsp页面中操作mysql 要用jsp页面操作mysql需要jdbc(不是非要jdbc,还有其他的) 下载地址:w ...