Spring依赖注入的模式和类型
依赖注入类型
依赖注入类型 | 配置元数据举例 |
---|---|
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依赖注入的模式和类型相关推荐
- Spring依赖注入的方式、类型、Bean的作用域、自动注入、在Spring配置文件中引入属性文件...
1.Spring依赖注入的方式 通过set方法完成依赖注入 通过构造方法完成依赖注入 2.依赖注入的类型 基本数据类型和字符串 使用value属性 如果是指向另一个对象的引入 使用ref属性 User ...
- arg是什么函数_java后端开发三年!你还不了解Spring 依赖注入,凭什么给你涨薪...
前言 前两天和一个同学吃饭的时候同学跟我说了一件事,说他公司有个做了两年的人向他提出要涨薪资,他就顺口问了一个问题关于spring依赖注入的,那个要求涨薪的同学居然被问懵了...事后回家想了想这一块确 ...
- java接口注入对象的意义_Java Web系列:Spring依赖注入基础
一.Spring简介 1.Spring简化Java开发 Spring Framework是一个应用框架,框架一般是半成品,我们在框架的基础上可以不用每个项目自己实现架构.基础设施和常用功能性组件,而是 ...
- spring依赖注入_Spring源码阅读:Spring依赖注入容器
依赖注入 依赖注入是Spring框架最核心的能力,Spring框架提供的AOP,WebMVC等其它功能都是以依赖注入容器作为基础构建的,Spring依赖注入容器类似于一个用于组装对象的框架内核,任何应 ...
- diy实现spring依赖注入
[README] 本文diy代码实现了 spring 依赖注入,一定程度上揭示了依赖注入原理: [1]控制反转-Inversion of Control 是一种编码思想,简而言之就是 应用程序A可以使 ...
- spring依赖注入_Spring依赖注入
spring依赖注入 介绍: 在设计良好的Java应用程序中,这些类应尽可能独立. 这样的设计提高了组件的可重用性. 它还使对各个组件进行单元测试变得更加容易. 依赖注入的概念促进了Java对象之间的 ...
- Spring: 依赖注入的实现
上一篇中已经实现了通过IOC容器创建BEAN并管理, 在实际开发中BEAN之间的依赖是不可避免的. 例: 用户模块依赖于通用模块, 订单模块同时依赖于用户模块和通用模块等等. Spring提供了依赖注 ...
- Java程序员进阶——Spring依赖注入原理分析
Spring依赖注入原理分析 下面谈谈Spring是如何实现反转模式IOC或依赖注入模式DI: 平时,我们需要生成一个对象,使用new语法,如一个类为A public class A{public v ...
- spring 依赖注入
Technorati 标记: spring,依赖注入,DI,ioc 平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的 ...
最新文章
- jQuery 3.0 的 setter/getter 模式
- mysql 授权 函数查询_第6篇 MySQL 查询中的数学函数
- mysql 创建表并设置主键自增
- android导入项目j,如何使用AndroidStudio将开源项目library发布到jcenter
- java年月日时分秒格式_Java 日期时间 LocalDate LocalTime LocalDateTime类
- 【PL/SQL】处理数据
- js截图插件_WordPress外贸网站插件装多了很卡很卡?别慌,试试这招
- SKPlayer -- 一个超级简单好用的音乐插件+CSS+HTML+JS
- ureport2项目使用
- 5G+MEC+V2X车联网解决方案白皮书
- 322. Coin Change
- bluescreen view-windows 蓝屏分析原因
- nodejs爬虫淘宝详情图
- 代码解读十 文件名“Ano_FlightDataCal.c”
- IOS APP更新问题
- ora-12505 监听程序当前无法识别sid
- 使用Nginx在云服务器上搭建图床
- 力扣1845——座位预约管理系统(优先队列)
- 因特网计算机地址被称为什么,因特网上每台计算机有一个规定的“地址”,这个地址被称为地址.A.TCPB.IPC.WebD.以上都不对...
- 【数值计算】数值解析--n元一次联立方程组:直接解法
热门文章
- python读写不同编码txt文件
- L1-044 稳赢-PAT团体程序设计天梯赛GPLT
- java编程线板切割问题_坑爹的日志无法按天切割问题!
- python web实战视频教程_Python Web开发实战【中级班】
- Cloudstack
- Eclipse安装git插件以及关联导入GitHub项目
- oracle 添加外键,报“未找到父项关键字”
- linux 批量删除进程的两种方法
- Net::SSH::Perl 包 与 Net::OpenSSH 包的 性能对比代码
- Zookeeper的Quorum机制-谈谈怎样解决脑裂(split-brain)