博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
20、自动装配-@Autowired&@Qualifier&@Primary
阅读量:5095 次
发布时间:2019-06-13

本文共 2154 字,大约阅读时间需要 7 分钟。

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 自动装配: * 

* 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
@Servicepublic class BookService {    @Autowired(required = false)    // @Qualifier("bookRepository")    private BookRepository bookRepository2;    public void print() {        System.out.println("bookRepository2。。。");    }    @Override    public String toString() {        return "BookService{" +                "bookRepository=" + bookRepository2 +                '}';    }}
  • 测试用例
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfigOfAutowired.class);@Testpublic void test1() {    BookService bookService = applicationContext.getBean(BookService.class);    System.out.println(bookService);    applicationContext.close();}

1221855-20181129164013401-1329899839.png

转载于:https://www.cnblogs.com/Grand-Jon/p/10039340.html

你可能感兴趣的文章
[Data Structure & Algorithm] 有向无环图的拓扑排序及关键路径
查看>>
git 常用命令
查看>>
cassandra vs mongo (1)存储引擎
查看>>
Visual Studio基于CMake配置opencv1.0.0、opencv2.2
查看>>
Vue音乐项目笔记(三)
查看>>
遍历Map对象
查看>>
计算剪贴板里仿制的代码行数
查看>>
MySQL索引背后的数据结构及算法原理
查看>>
#Leetcode# 209. Minimum Size Subarray Sum
查看>>
C#语言-04.OOP基础
查看>>
1)session总结
查看>>
PHP深浅拷贝
查看>>
SDN第四次作业
查看>>
ActiveMQ(4) ActiveMQ JDBC 持久化 Mysql 数据库
查看>>
DM8168 DVRRDK软件框架研究
查看>>
django迁移数据库错误
查看>>
epoll学习01
查看>>
yii 跳转页面
查看>>
闭包问题
查看>>
C#一个FTP操作封装类FTPHelper
查看>>