依赖注入类型

依赖注入类型 配置元数据举例
Setter 方法 <proeprty name=“user” ref=“userBean”/>
构造器 <constructor-arg name=“user” ref=“userBean” />
字段 @Autowired User user;
方法 @Autowired public void user(User user) { ... }
接口回调 class MyBean implements BeanFactoryAware { ... }

自动绑定(Autowiring)模式

自动绑定主要在xml模式下使用

模式 说明
no 默认值,未激活 Autowiring,需要手动指定依赖注入对象。
byName 根据被注入属性的名称作为 Bean 名称进行依赖查找,并将对象设置到该 属性。
byType 根据被注入属性的类型作为依赖类型进行查找,并将对象设置到该属性。
constructor 特殊 byType 类型,用于构造器参数。

Setter 方法注入(自动模式)

  • ByName 通过名称
  • ByType 通过类型

ByName 通过名称

配置文件Beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:util="http://www.springframework.org/schema/util"xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd"><bean id="rumenz" class="com.rumenz.Rumenz"><property name="id" value="123"/><property name="name" value="入门小站"/></bean><bean id="holder" class="com.rumenz.Holder"  autowire="byType"></bean>
</beans>

调用


package com.rumenz;public class DemoApplication {public static void main(String[] args) {ClassPathXmlApplicationContext ca=new ClassPathXmlApplicationContext("Beans.xml");ca.refresh();Holder bean1 = ca.getBean(Holder.class);System.out.println(bean1.getRumenz().getName());ca.close();}}

输出

入门小站

ByType 通过类型

配置文件Beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:util="http://www.springframework.org/schema/util"xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd"><bean id="rumenz" class="com.rumenz.Rumenz"><property name="id" value="123"/><property name="name" value="入门小站"/></bean><bean id="holder" class="com.rumenz.Holder"  autowire="byType"></bean>
</beans>

调用


package com.rumenz;public class DemoApplication {public static void main(String[] args) {ClassPathXmlApplicationContext ca=new ClassPathXmlApplicationContext("Beans.xml");ca.refresh();Holder bean1 = ca.getBean(Holder.class);System.out.println(bean1.getRumenz().getName());ca.close();}}

输出

入门小站

原文: https://rumenz.com/rumenbiji/Spring-autowiring-model.html

Spring依赖注入的模式和类型相关推荐

  1. Spring依赖注入的方式、类型、Bean的作用域、自动注入、在Spring配置文件中引入属性文件...

    1.Spring依赖注入的方式 通过set方法完成依赖注入 通过构造方法完成依赖注入 2.依赖注入的类型 基本数据类型和字符串 使用value属性 如果是指向另一个对象的引入 使用ref属性 User ...

  2. arg是什么函数_java后端开发三年!你还不了解Spring 依赖注入,凭什么给你涨薪...

    前言 前两天和一个同学吃饭的时候同学跟我说了一件事,说他公司有个做了两年的人向他提出要涨薪资,他就顺口问了一个问题关于spring依赖注入的,那个要求涨薪的同学居然被问懵了...事后回家想了想这一块确 ...

  3. java接口注入对象的意义_Java Web系列:Spring依赖注入基础

    一.Spring简介 1.Spring简化Java开发 Spring Framework是一个应用框架,框架一般是半成品,我们在框架的基础上可以不用每个项目自己实现架构.基础设施和常用功能性组件,而是 ...

  4. spring依赖注入_Spring源码阅读:Spring依赖注入容器

    依赖注入 依赖注入是Spring框架最核心的能力,Spring框架提供的AOP,WebMVC等其它功能都是以依赖注入容器作为基础构建的,Spring依赖注入容器类似于一个用于组装对象的框架内核,任何应 ...

  5. diy实现spring依赖注入

    [README] 本文diy代码实现了 spring 依赖注入,一定程度上揭示了依赖注入原理: [1]控制反转-Inversion of Control 是一种编码思想,简而言之就是 应用程序A可以使 ...

  6. spring依赖注入_Spring依赖注入

    spring依赖注入 介绍: 在设计良好的Java应用程序中,这些类应尽可能独立. 这样的设计提高了组件的可重用性. 它还使对各个组件进行单元测试变得更加容易. 依赖注入的概念促进了Java对象之间的 ...

  7. Spring: 依赖注入的实现

    上一篇中已经实现了通过IOC容器创建BEAN并管理, 在实际开发中BEAN之间的依赖是不可避免的. 例: 用户模块依赖于通用模块, 订单模块同时依赖于用户模块和通用模块等等. Spring提供了依赖注 ...

  8. Java程序员进阶——Spring依赖注入原理分析

    Spring依赖注入原理分析 下面谈谈Spring是如何实现反转模式IOC或依赖注入模式DI: 平时,我们需要生成一个对象,使用new语法,如一个类为A public class A{public v ...

  9. spring 依赖注入

    Technorati 标记: spring,依赖注入,DI,ioc 平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的 ...

最新文章

  1. jQuery 3.0 的 setter/getter 模式
  2. mysql 授权 函数查询_第6篇 MySQL 查询中的数学函数
  3. mysql 创建表并设置主键自增
  4. android导入项目j,如何使用AndroidStudio将开源项目library发布到jcenter
  5. java年月日时分秒格式_Java 日期时间 LocalDate LocalTime LocalDateTime类
  6. 【PL/SQL】处理数据
  7. js截图插件_WordPress外贸网站插件装多了很卡很卡?别慌,试试这招
  8. SKPlayer -- 一个超级简单好用的音乐插件+CSS+HTML+JS
  9. ureport2项目使用
  10. 5G+MEC+V2X车联网解决方案白皮书
  11. 322. Coin Change
  12. bluescreen view-windows 蓝屏分析原因
  13. nodejs爬虫淘宝详情图
  14. 代码解读十 文件名“Ano_FlightDataCal.c”
  15. IOS APP更新问题
  16. ora-12505 监听程序当前无法识别sid
  17. 使用Nginx在云服务器上搭建图床
  18. 力扣1845——座位预约管理系统(优先队列)
  19. 因特网计算机地址被称为什么,因特网上每台计算机有一个规定的“地址”,这个地址被称为地址.A.TCPB.IPC.WebD.以上都不对...
  20. 【数值计算】数值解析--n元一次联立方程组:直接解法

热门文章

  1. python读写不同编码txt文件
  2. L1-044 稳赢-PAT团体程序设计天梯赛GPLT
  3. java编程线板切割问题_坑爹的日志无法按天切割问题!
  4. python web实战视频教程_Python Web开发实战【中级班】
  5. Cloudstack
  6. Eclipse安装git插件以及关联导入GitHub项目
  7. oracle 添加外键,报“未找到父项关键字”
  8. linux 批量删除进程的两种方法
  9. Net::SSH::Perl 包 与 Net::OpenSSH 包的 性能对比代码
  10. Zookeeper的Quorum机制-谈谈怎样解决脑裂(split-brain)