20、自动装配-@Autowired@Qualifier@Primary
20、自动装配-@Autowired&@Qualifier&@Primary
- 自动装配:Spring 利用依赖注入(DI),完成对IOC容器中各个依赖关系赋值
20.1 @Autowired :自动注入
- 默认优先按照类型去容器中找对应的组件,
applicationContext.getBean(BookRepository.class)
,找到就赋值。 - 如果找到多个相同类型的组件,再将属性名称作为组件的id 去容器中查找
applicationContext.getBean("bookRepository")
- 使用
@Qualifier("bookRepository")
指定装配组件 - 自动装配默认一定要将属性赋值好,没有就会报错。可以使用
@Autowired(required = false)
来配置非必须的注入,有则注入,没有就算了。 @Primary
让Spring进行自动装配的时候,默认选择需要装配的bean,也可以继续使用@Qualifier
指定需要装配的bean的名称@Qualifier
的权重大于@Primary
,如果指定了@Qualifier
则@Primary
失效
20.2 代码实例
- MainConfigOfAutowired.java
package com.hw.springannotation.config;import com.hw.springannotation.dao.BookRepository;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;import javax.management.relation.RelationType;/*** @Description 自动装配:* <p>* Spring 利用依赖注入(DI),完成对IOC容器中各个依赖关系赋值* 1. @Autowire* @Author hw* @Date 2018/11/29 16:04* @Version 1.0*/
@Configuration
@ComponentScan({"com.hw.springannotation.service", "com.hw.springannotation.controller", "com.hw.springannotation.dao"})
public class MainConfigOfAutowired {@Primary // 首选装配bean@Bean("bookRepository2")public BookRepository bookRepository() {return new BookRepository("2");}
}
- BookService.java
@Service
public class BookService {@Autowired(required = false)// @Qualifier("bookRepository")private BookRepository bookRepository2;public void print() {System.out.println("bookRepository2。。。");}@Overridepublic String toString() {return "BookService{" +"bookRepository=" + bookRepository2 +'}';}
}
- 测试用例
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfigOfAutowired.class);@Test
public void test1() {BookService bookService = applicationContext.getBean(BookService.class);System.out.println(bookService);applicationContext.close();
}
转载于:https://www.cnblogs.com/Grand-Jon/p/10039340.html
20、自动装配-@Autowired@Qualifier@Primary相关推荐
- 自动装配——@Autowired@Qualifier@Primary
* 自动装配; * Spring利用依赖注入(DI),完成对IOC容器中中各个组件的依赖关系赋值: * 1).@Autowired:自动注入: * 1).默认优先按照类型去容器中找对应的组件:appl ...
- 【Spring注解驱动开发】使用@Autowired@Qualifier@Primary三大注解自动装配组件,你会了吗?
写在前面 [Spring专题]停更一个多月,期间在更新其他专题的内容,不少小伙伴纷纷留言说:冰河,你[Spring专题]是不是停更了啊!其实并没有停更,只是中途有很多小伙伴留言说急需学习一些知识技能, ...
- 【Spring系列04】自动装配(Qualifier,Autowired,Resource讲解)
这里写目录标题 一:Bean的自动装配 1.自动装配说明 2.测试环境搭建[方法一:在xml中显式配置] ++++++以下[方法三:隐式的bean发现机制和自动装配]+++++++ 3.byName[ ...
- 自动装配——@Autowired 构造器,参数,方法,属性都是从容器中获取参数组件的值||自定义组件想要使用Spring容器底层的一些组件 ApplicationContext,BeanFactory
@Autowired:构造器,参数,方法,属性:都是从容器中获取参数组件的值 * 1).[标注在方法位置]:@Bean+方法参数:参数从容器中获取;默认不写@Autowired效果是一样的:都能自动装 ...
- Aop 自动装配Autowired时,不装配接口而是实现类而报错 切面配置 satisfiedDependencyException|BeanNotOfRequiredTypeException
在学到aop时,我本来打算测试环绕通知和异常通知的 这里我是在接口AccountService的实现类AccountServiceImpl里直接定义了一个方法findByName() 但我在测试类里用 ...
- Spring自动装配@Autowired的三种方式
转自:https://ahaochan.github.io/Java/JavaWeb/Spring/Spring%E8%87%AA%E5%8A%A8%E8%A3%85%E9%85%8D@Autowir ...
- Spring容器父子类继承关系交给spring容器管理采用@autowired自动装配分析
第一个青春是上帝给的 第二个的青春是靠自己努力的. 在开发项目过程中开发者们可能会遇到这样的问题 @autowired自动装配模式的工作模式是:在springIOC定位所有的Bean后,这个字段需要按 ...
- spring自动装配的3种注解
1.@Autowired @Qualifier @Primary 2.@Resource 3.@Inject @Autowired 自动装配 自动装配: Spring利用依赖注入(DI),完成对IOC ...
- 详解Spring中Bean的自动装配~
目录 1. 环境搭建 2. byName.byType 3. 使用注解实现自动装配 @Autowired @Resource 小结 自动装配是Spring满足bean依赖的一种方式 Spring会在上 ...
- Spring自学日志03(作用域,自动装配)
bean的作用域 Singleton(单例模式,是默认spring的) <bean id ="user2" class="com.injection.User&qu ...
最新文章
- python3 的encode 和 decode
- leetcode算法题--环绕字符串中唯一的子字符串★
- shell中正则表达式详解_【转】【shell】正则表达式使用详解(一)
- 前端后分离深入分析 ——浏览器渲染和服务器渲染区别
- C语言:L1-034 点赞 (20分)(解题报告)
- 五皇后问题 java_Java的5个古怪问题
- 【转】 谈谈C++中的swap函数
- JAVA:Eclipse代码和xml文件的智能提示
- VS2017编写C++多文件时,出现LNK2005、LNK1169报错的解决方法
- 解决UnicodeEncodeError: 'gbk' codec can't encode character '\xe4' in position 319等问题
- MarkDown 和LaTex语法学习(基于软件Typora)
- 让“施工进度计划”真正产生价值——不是为了做计划而计划
- 2018 网易校招 骰子游戏
- 腾达n318虚拟服务器,腾达N318无线路由器的设置教程
- 显卡天梯图2020年10月完整版
- Java--制作乱字游戏
- iPad如何分屏?iPad分屏详细教程来啦!
- Cyclone Protocol 首次中文社区亮相AMA实录(精华)
- 如何做数据分析报告?
- FPGA和eeprom通信