Spring Ioc注入的四种方式
来源:互联网 发布:hptv和平网络电视 编辑:程序博客网 时间:2024/06/02 15:52
Spring支持的注入方式共有四种:set注入、构造注入、静态工厂注入、实例化工厂.
以下列举常用的两个注入的方式:
一:set注入
1.创建一个UserDao的类
package com.shuaiwen.dao; public void saveDao(){public class UserDao { System.out.println("userDao层的saveDao..."); }}
2.创建一个service,通过创建UserService的getter方法,把UserDao对象作为参数传入
package com.shuaiwen.service;import com.shuaiwen.dao.UserDao;public class UserService { private UserDao userDao; public UserService() { super(); } //通过set注入 public void setUserDao(UserDao userDao) { this.userDao = userDao; } public void saveService(){ userDao.saveDao(); }}
3.设置.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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- set注入 --> <bean id="userService" class="com.shuaiwen.service.UserService"> <property name="userDao" ref="userDao"></property> </bean> <bean id="userDao" class="com.shuaiwen.dao.UserDao"></bean> </beans>
二、构造器注入
1.和上面一样创建那两个class类
package com.shuaiwen.dao;public class UserDao { public void saveDao(){ System.out.println("userDao层的saveDao..."); }}
2.然后创建UserService的带参构造,把userDao注入其中。
package com.shuaiwen.service;import com.shuaiwen.dao.UserDao;public class UserService { private UserDao userDao; public UserDao getUserDao() { return userDao; } public UserService() { super(); // TODO Auto-generated constructor stub } //创建带参构造 public UserService(UserDao userDao) { super(); this.userDao = userDao; } public void saveService(){ userDao.saveDao(); }}
3.配置.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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 构造器注入 --> <!-- <bean id="userService" class="com.shuaiwen.service.UserService"> <constructor-arg ref="userDao"></constructor-arg> </bean> <bean id="userDao" class="com.shuaiwen.dao.UserDao"></bean> --></beans>
还有一个问题:
- A类中注入了B类对象
- B类中注入了A类对象
循环依赖——在采用构造器注入的方式配置bean时,很有可能会产生循环依赖的情况
对于此问题,一个可能的解决方法就是修改源代码,将某些构造器注入改为setter注入。另一个解决方法就是完全放弃构造器注入,只使用setter注入。
0 0
- Spring Ioc注入的四种方式
- spring(IOC)的四种依赖注入方式
- spring四种依赖注入方式 ( 依赖注入DI+ 控制反转IOC的原理)
- Spring IOC的三种注入方式
- Spring三种注入IOC注入方式
- Spring三种注入IOC注入方式
- Spring三种注入IOC注入方式
- spring详解:spring IOC依赖注入的几种方式
- 02-Spring-spring ioc注入的三种方式
- spring的四种注入方式
- spring依赖注入的四种方式
- Spring的四种注入方式
- spring实现注入的四种方式
- Spring依赖注入的四种方式
- spring 依赖注入的四种方式
- spring的四种注入方式
- Spring的四种注入方式
- spring四种依赖注入的方式
- Enum枚举值获取及List的使用Demo
- 计数
- 算典03_习题_03_Uva-1225
- hibernate面试题(部分)
- 冒泡排序及java代码实现
- Spring Ioc注入的四种方式
- 欢迎使用CSDN-markdown编辑器
- linux 性能监控分析以及调优(sar)
- 重生
- 面试题24:二叉搜索树的后序遍历序列
- 平面最近点对 洛谷1257 分治 c++
- Ubuntu 软件安装1
- POJ2318 TOYS
- (四)阿里巴巴JAVA编程规范之工程规约