Spring——依赖注入杂记
一、 对象构造方法IOC创建的方式
1、默认使用无参构造方法
不用使用<constructor -arg />
2、按照下标进行构造
3、通过类型匹配来构造
4、通过变量名直接使用
二、 xml配置详解
1、 alias别名:
2、 bean配置:
3、 import配置:
导入其他的配置文件xml。如果内容重名且类型重复,会被自动合并。一般用于团队开发使用,多人开发合并成一个配置文件进行操作。
三、 依赖注入
依赖:bean对象的创建依赖于容器
注入:bean对象中所有属性,由容器来注入
1、 构造器注入
2、 set注入【重点】
(1) 普通类型直接注入:
(2) 引用类型,bean注入:
(3) 数组注入:
(4) List注入:
(5) map注入:【entry结构】
(6) set注入:
(7) null值注入:
可以设置为空值或者null;
设置空串
设置为null
(8) property配置类注入:
使用props设置键值对,值在尖括号中间,比如配置数据库信息
3、 特殊注入方式:
p命名空间注入:可以直接注入属性的值,对应set方法的属性注入(必须有无参构造函数)
c命名空间注入:使用构造方法注入(必须有有参构造方法)
注意:p和c都需要导入xml约束。
四、 bean的作用域:bean scopes
四种作用域:显式设置是在设置bean的时候加上scopes,不设置就是单例模式
1、 单例模式:
默认为singleton,全局都是一个对象,即使多个getbean也是同一个对象的实例。
2、 原型模式:
设置为prototype,每次使用getbean都会产生新对象
其余的几种都是必须在web中才可以使用的。
五、 Bean自动装配
自动装配是Spring满足bean依赖的一种方式
Spring会在上下文中自动寻找,并自动给bean装配属性
在Spring中有三种装配的方式:
• xml显式的装配(上文)
• Java中显式装配
• 隐式的自动装配bean
1、 使用bean的autowire,细分以下几种方式:
(1) 通过name装配:
会自动查找和自己对象set方法后面的值对应的。
这里的People类有两个属性,一个是cat一个是dog,且分别有对应的set方法,然后在配置文件中有两个bean,分别是cat和dog,不过因为dog的名字不对应setdog,所以这里只有cat可以被自动装配。
(2) 通过type装配:
会自动在上下文中查找和自己对象属性类型一致的bean。可以解决名字不匹配的情况,但是会出现新的问题,就是如果同时定义两个同类的bean,就会报错。
这种type方式甚至可以连id都省略
2、 使用注解实现自动装配
o 导入约束(context约束)
o 配置注解的支持,加入context:annotation-config/
(1) 通过注解导入需要在类属性上加入@Aotuwired注解
另一个好处:这种方式可以不在类中加入set方法,因为注解是通过反射的原理实现注入的。前提是自动装配的属性在IOC(Spring)容器中存在,且符合Byname或者Bytype。
注解后面可以跟一个required属性(布尔类型),表示可以为空值null
与Java中的注解@Nullable类似的作用
public Person(@Nullable String name){…}
如果在xml配置文件中,有相同类的bean,或者名字不满足,那么可以使用@Qualifier(“指定id”)注解,进行指定匹配。
(2) (Java的原生注解):@Resource
这个注解可以自动通过名字和类型去匹配。如果名字和类型都不匹配才会报错(比较高级),而且因为是Java原生包,在不导入Spring包的情况下也可以使用。
而且这个注解可以直接指定名字进行匹配:无需再使用@Qualifier
上一篇: 《Java开发手册》v1.5.0 华山版编码规约解读之异常处理
下一篇: (Java)递归实现汉诺塔
推荐阅读
-
Spring——依赖注入杂记
-
Spring5之maven依赖
-
Spring的循环依赖
-
Spring 单例Bean依赖多例Bean时,多例Bean始终是同一个 博客分类: 常见问题 常见问题
-
Angular入门之依赖注入
-
Spring 依赖注入的学习 SpringHSQLDBJDBCDerbyBean
-
spring 依赖注入到直接new 对象
-
Spring 注解注入的三种常用的方式 博客分类: Spring spring注解annotationspring
-
Spring IoC是如何进行依赖注入的
-
[转]EJB3.0中的依赖注入,截获器及其在WebLogic Server 10中的扩展 博客分类: J2EE开发技术指南企业应用面临的问题EJB3开发应用 weblogicejb企业应用应用服务器spring