【原创】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 < ...
随机推荐
- js 背景自动切换
//首页自动更换背景特效开始============================================ var curIndex = 0; //时间间隔(单位毫秒),每秒钟显示一张,数组 ...
- SQL存储过程使用方法
public void findflight() { // 创建参数 IDataParameter[] parameters = { ) , new SqlParameter("@Name& ...
- 深入理解java虚拟机---java内存区域与内存溢出异常---2堆栈溢出
本文来源于翁舒航的博客,点击即可跳转原文观看!!!(被转载或者拷贝走的内容可能缺失图片.视频等原文的内容) 若网站将链接屏蔽,可直接拷贝原文链接到地址栏跳转观看,原文链接:https://www.cn ...
- Java Swing实战(一)JFrame和JTabbedPane容器
概述: 项目是一个桌面程序,涉及标签和按钮组件.布局管理器组件.面板组件.列表框和下拉框组件等组件,以及Swing事件处理机制. 下面先从最基础的界面开始. /** * @author: lishua ...
- 二进制GCD算法 减少%的时间消耗
/* 二进制求最大公约数.由于传统的GCD,使用了%,在计算机运行过程中要花费大量的时间,所以,采取二进制的求法,来减少时间的消耗. 算法: 当a,b都是偶数时: gcd(a,b)=2*gcd(a/2 ...
- AutoFac在项目中应用的体会
AutoFac的工作原理就是:注册类并映射到接口,通过注入后返回相应实例化的类! 先来简单介绍下Autofac的使用 1.通过Nuget或代码安装autofac 安装autofac :ins ...
- 浅谈TCP/IP(new 常见面试问题)
1. TCP/IP重传机制,如何保证消息读到一个完整内容再反序列化 2. TCP四次回收比三次握手多了什么操作,什么时候会进入Time_await状态 3.
- POJ3087(KB1-G 简单搜索)
Shuffle'm Up Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10366 Accepted: 4800 Des ...
- egg.js-基于koa2的node.js进阶(一)
一.路由进阶Egg路由的路由重定向,路由分组 在router.js修改为如下格式require引用 module.exports = app => { const { router, contr ...
- JS中Date.parse()和Date.UTC()返回值不一致
Date.parse() 方法解析一个表示某个日期的字符串,并返回从1970-1-1 00:00:00 UTC 到该日期对象(该日期对象的UTC时间)的毫秒数,如果该字符串无法识别,或者一些情况下,包 ...