自动装配 01 @Autowired & @Qualifier & @Primary

自动装配:Spring利用依赖注入(DI),完成对IOC容器中各个组件的依赖关系赋值

  1. 常用@Autowired

    • 默认优先按照类型去容器中找对应的组件
    • 若ioc中有多个同类型的bean,再将属性名称作组件id去容器中查找(会报错
  2. 也可以使用 @Qualifier("[beanName]")来指定注入bean,这种情况下可以存在相同类型的多个bean‘

  3. 如果没有bean,会报错 自动装配默认一定要将属性赋值好,否则会报错

    可以修改这种默认设置: @Autowired(required=false)
    多数据源的时候用的多

  4. @Primary:让Spring进行自动装配的时候默认使用首选的bean,也可以继续使用@Qulifier指定需要装配的bean的名字

    优先级:@Qulifier > @Primary

@Primary测试

常用@Autowired
BookDao.java


@Repository
public class BookDao {private Integer lable = 1;public Integer getLable() {return lable;}public void setLable(Integer lable) {this.lable = lable;}@Overridepublic String toString() {return "BookDao{" +"lable=" + lable +'}';}
}

BookService.java

@Service
public class BookService {@Autowiredprivate BookDao booKDao;@Overridepublic String toString() {return "BookService{" +"booKDao=" + booKDao +'}';}
}

BookController.java

@Controller
public class BookController {@Autowiredprivate BookService bookService;
}

配置类
MainConfig4Autowire.java

package com.example.annotations.config;import com.example.annotations.dao.BookDao;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;@Configuration
@ComponentScan(value = {"com.example.annotations.service","com.example.annotations.dao","com.example.annotations.controller"})
public class MainConfig4Autowire {@Bean("bookDao2")public BookDao bookDao(){BookDao bookDao = new BookDao();bookDao.setLable(2);return bookDao;}
}

测试:

    @Testvoid autowiredTest(){//配置类测试AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfig4Autowire.class);System.out.println("容器创建完毕");//获取beanSystem.out.println("准备获取bean");BookService bookService = applicationContext.getBean(BookService.class);System.out.println(bookService.toString());System.out.println("获取完毕");//关闭容器applicationContext.close();System.out.println("容器已关闭");}

运行结果:

配置类不加 @Primary 的时候,启动测试会报错,因为有两个BookDao的bean;配置类如果不指定注入的话,运行结果如下:

@Qualifier测试

配置类:

@Configuration
@ComponentScan(value = {"com.example.annotations.service","com.example.annotations.dao","com.example.annotations.controller"})
public class MainConfig4Autowire {//    @Primary@Bean("bookDao2")public BookDao bookDao(){BookDao bookDao = new BookDao();bookDao.setLable(2);return bookDao;}
}

BookService.java


@Service
public class BookService {@Autowired@Qualifier("bookDao2")private BookDao booKDao;@Overridepublic String toString() {return "BookService{" +"booKDao=" + booKDao +'}';}
}

运行结果:

【SpringBoot_ANNOTATIONS】自动装配 01 @Autowired @Qualifier @Primary相关推荐

  1. Spring中的自动装配和Autowired

    彻底搞明白Spring中的自动装配和Autowired 一.自动装配 当Spring装配Bean属性时,有时候非常明确,就是需要将某个Bean的引用装配给指定属性.比如,如果我们的应用上下文中只有一个 ...

  2. 自动装配——@Autowired@Qualifier@Primary

    * 自动装配; * Spring利用依赖注入(DI),完成对IOC容器中中各个组件的依赖关系赋值: * 1).@Autowired:自动注入: * 1).默认优先按照类型去容器中找对应的组件:appl ...

  3. 【Spring注解驱动开发】使用@Autowired@Qualifier@Primary三大注解自动装配组件,你会了吗?

    写在前面 [Spring专题]停更一个多月,期间在更新其他专题的内容,不少小伙伴纷纷留言说:冰河,你[Spring专题]是不是停更了啊!其实并没有停更,只是中途有很多小伙伴留言说急需学习一些知识技能, ...

  4. (二)Spring自动装配

    Spring自动装配 为了减少XML的配置数量.Spring提供了几种技巧来解决这一问题: 自动装配(autowiring): 有助于减少<property>元素和<constroc ...

  5. spring自动装配的3种注解

    1.@Autowired @Qualifier @Primary 2.@Resource 3.@Inject @Autowired 自动装配 自动装配: Spring利用依赖注入(DI),完成对IOC ...

  6. Spring自动装配注解

    Spring自动装配注解 注解 来源 特点与区别 备注 @Autowired Spring定义 Spring提供自动装配注解 @Autowired详解 @Resource(JSR250) java注解 ...

  7. Spring 自动装配及其注解

    一.属性自动装配 首先,准备三个类,分别是User,Cat,Dog.其中User属性拥有Cat和Dog对象. 1 package com.hdu.autowire; 2 3 public class ...

  8. Spring—自动装配与注解自动装配

    目录 自动装配 Spring支持5种自动装配模式 演示自动装配 1. no 默认装配方式 2.使用 byName 自动装配 3.使用 byType 自动装配 4.使用 constructor 自动装配 ...

  9. Spring的自动装配方法

    Spring的装配方式 我们已经了解了依赖注入的基本原理,初识了@Component和@AutoWired标注的用法.为一个应用中的Beans的配置依赖注入关系的过程称之为装配(Wiring). Sp ...

  10. java集成测试_基于TestNG+Mockito及自动装配注解的Spring MVC集成测试

    本文主要总结自己近期在项目中对MVC集成测试的实践及理解,因为先前对这块未实践过.主要参考了官方文档<11.3.6 Spring MVC Test Framework>这一章节内容,涉及到 ...

最新文章

  1. JavaWeb_响应和请求数据包
  2. solr之schema.xml中文翻译
  3. uva1509(暴力dfs)
  4. 设计模式-原型模式(Prototype)
  5. 在ubuntu中使用MYBASE
  6. 获取异常信息_如何在 ASP.NET Core 中实现全局异常拦截
  7. 董小姐尴尬了?被判赔偿奥克斯1.67亿,格力回应已上诉
  8. 漫画:应用程序被拖慢?罪魁祸首是 Log4j!
  9. Java数据库编程---JDBC操作步骤及数据库连接操作
  10. Ueditor word图片转存按钮灰色无法激活
  11. 北理珠计算机专业在广东排第几,北理珠2019广东美术类生源位居全省同类院校第一!...
  12. 仿英雄联盟LOL网页设计作业 HTML CSS游戏官网网页模板 大学生游戏介绍网站毕业设计 DW游戏主题网页模板下载 游戏娱乐网页成品代码 英雄联盟网页作品下载
  13. cadvisor 离线安装
  14. 微信小程序 有赞UI关于Tab 标签页的坑
  15. RF(射频) - VSWR(电压驻波比)
  16. antd tooltip 修改样式
  17. 图像一阶导数和二阶导
  18. 浅谈编程能力的培养与提高——写给编程初学者的话
  19. 使用 Power Query 制作工资条
  20. 常见的网站推广方法有哪些?

热门文章

  1. 双管理人模式下的契约型私募基金实用发行指南
  2. 小银行忍痛放弃资管业务? 转型渠道代销是大势所趋
  3. (转)郭广昌:复星账上有400亿现金,未来十年一切围绕C2M战略
  4. SpringCloud 应用在 Kubernetes 上的最佳实践(一):开发篇 | 凌云时刻
  5. 新品Demo —— ZStack Mini 超融合一体机
  6. 3d游戏编程大师技巧 源代码_C/C++编程新手入门基础系列:俄罗斯方块小游戏制作源代码...
  7. 毕设题目:Matlab通信
  8. 【图像压缩】基本matlab DCT+量化+huffman JPEG图像压缩【含Matlab源码 1217期】
  9. 【脑电信号】基于matlab小波工具箱脑电降噪【含Matlab源码 707期】
  10. 【股价预测】基于matlab最小二乘法股票价格预测【含Matlab源码 348期】