【原创】Spring 注入方式
Spring 强烈推荐注解在构造器上,且对于不能为null的字段或者属性都用断言。
1. 设值注入
原理:通过setter方法注入
XML配置方式:bean下的property标签,用value指定基本类型数据,用ref引用其他bean。
2. 构造器注入
原理:通过构造函数注入
XML配置方式:bean下的constructor-arg标签,根据name/type/index确定依赖的位置(防止歧义),用value指定基本类型数据,用ref指定其他bean
注:上述俩种方式可以用来注入集合或者Map类型数据,在property或者constructor-arg标签下用list/set/map子标签定义。
3. 静态工厂/实例工厂注入
原理:通过工厂的类方法或者工厂的实例方法来实现注入
XML配置方式:静态工厂在bean下使用class指定工厂类,factory-method指定工厂方法。实例工厂首先需要将工厂类配置为一个bean,然后在bean下使用factory-bean指定实例工厂bean,用constructor-arg或者property指定参数。
注:实际上这俩种方法是本质上也是通过set和构造器注入实现的,主要在于提供属性或者构造器参数的方式:一般是引用其他bean(不讨论基本数据类型),工厂方式注入则是引用工厂bean。
4. 属性值/字段/普通方法注入
- 调用getter方法:使用PropertyPathFactoryBean 
- 调用类或对象的Filed值:使用FiledRetrievingFactoryBean 
- 调用普通方法:使用MethodInvokingFactoryBean 
参考:https://my.oschina.net/itblog/blog/206481
【原创】Spring 注入方式的更多相关文章
- Spring注入方式(1)
		Spring支持3种依赖注入方式,分别为属性注入.构造器注入和工厂方法注入(很少使用,不推荐),下面分别对属性注入和构造器注入详细讲解. 1.常量注入 属性注入是通过setter方法注入Bean的属性 ... 
- Spring注入方式及用到的注解
		注入方式: 把DAO实现类注入到service实现类中,把service的接口(注意不要是service的实现类)注入到action中,注 入时不要new 这个注入的类,因为spring会自动注入,如 ... 
- Spring课程 Spring入门篇 2-2 Spring注入方式
		课程链接: 本节主要讲了以下两块内容: 1 xml两种注入方式 2 注入方式代码实现 3 特别注意 1 xml两种注入方式 构造注入和set注入 2 注入方式代码实现 2.1 set注入方式的实现 实 ... 
- Spring注入方式及注解配置
		一:基于xml的DI(Dependency Injection) 注入类型: 定义学生Student实体类和小汽车Car实体类:进行封装和生成ToString(),并自定义属性Car Student ... 
- Spring源码学习之:你不知道的spring注入方式
		前言 在Spring配置文件中使用XML文件进行配置,实际上是让Spring执行了相应的代码,例如: 使用<bean>元素,实际上是让Spring执行无参或有参构造器 使用<prop ... 
- Spring注入方式(2)
		3.引用其他bean Bean经常需要相互协作完成应用程序的功能,bean之间必须能够互相访问,就必须在bean配置之间指定对bean的引用,可以通过节点<ref>或者ref来为bean属 ... 
- 一个接口多个实现类的Spring注入方式
		1. 首先, Interface1 接口有两个实现类 Interface1Impl1 和 Interface1Impl2 Interface1 接口: package com.example.serv ... 
- Spring注入方式
- Spring学习三----------注入方式
		© 版权声明:本文为博主原创文章,转载请注明出处 Spring注入方式 本篇博客只讲最常用的两种注入方式:设值注入和构造器注入.代码为完整代码,复制即可使用. 1.目录结构 2.pom.xml < ... 
随机推荐
- composer windows安装
			一.下载安装包安装 https://getcomposer.org/download/(由于墙的限制,可能下载可执行文件失败,即使成功,由于网络的原因,安装的时候也可能会失败,所以建议用第二种方法) ... 
- angularjs 从外部改变controller内的数据
			var appElement = document.querySelector('[ng-controller=seatsCtrl]'); var $scope = angular.element(a ... 
- EventProxy流程控制
			EventProxy流程控制 EventProxy是一个通过控制事件触发顺序来控制业务流程的工具. 1. 利用事件机制解耦复杂业务逻辑2. 移除被广为诟病的深度callback嵌套问题3. 将串行等待 ... 
- 写一个有字符界面的ssh链接工具
			大概的样子 这是大致的样子- 写之前想说的 因为个人工作的的电脑是deepin系统的,系统本身的命令行非常好用,用第三方的ssh工具用不习惯,就想自己写一个. shell脚本是第一次写,写的不是很好, ... 
- redis入门基础
			环境: centos 一.安装 sudo su cd wget http://labfile.oss.aliyuncs.com/courses/106/redis-2.8.4.tar.gz tar - ... 
- jackson @ResponseBody 处理日期类型的字段
			前言:以前只知道一种方式(@JsonFormat)来处理日期格式问题,今天才发现还有两种方式,并且可以全局设置格式,这里记录一下. 首先,pom.xml 中需要先引入如下 jackson 的依赖: & ... 
- Rafy中的IOC
			Rafy是什么可以通过下面博客来了解 Rafy 领域实体框架演示(3) - 快速使用 C/S 架构部署 - BloodyAngel - 博客园 以下是看源码中的一点记录,供以后学习使用 主要是Rafy ... 
- C#观察者模式的应用与思考
			1:项目场景 在设计数据表的时候有时候为了将来统计或查询的方便,我们会冗余一些字段.如有三张数据表,学校信息表.班级动态表.班级信息表. 班级动态由学校老师所发,可以进行评论点赞等操作,为了提升这种非 ... 
- 关于Dubbo异常之Data length too large
			最近几日发现生产环境项目打出的日志,每天都在30~50G以上,寻找多次发现问题: 首先查看日志只看到大批量的json数据输出,这是方法查询后的返回值输出,期初以为是自己打了logger,结果寻找多次, ... 
- Ubuntu16.04安装jupiter
			Ubuntu16.04安装jupiter 1.安装pip pip是一个安装和管理 Python 包的工具, 是 easy_install 的一个替换品.自然对应Python3,则有pip3. Pyth ... 
