spring依赖注入的方式总结

上传人:油条 文档编号:14301794 上传时间:2017-10-30 格式:DOC 页数:6 大小:119KB
返回 下载 相关 举报
spring依赖注入的方式总结_第1页
第1页 / 共6页
spring依赖注入的方式总结_第2页
第2页 / 共6页
spring依赖注入的方式总结_第3页
第3页 / 共6页
spring依赖注入的方式总结_第4页
第4页 / 共6页
spring依赖注入的方式总结_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《spring依赖注入的方式总结》由会员分享,可在线阅读,更多相关《spring依赖注入的方式总结(6页珍藏版)》请在金锄头文库上搜索。

1、spring 依赖注入的三种方式:在讲解依赖注入的 3 种实现方式之前,这里先说一下依赖注入的概念:让组件依赖于抽象,当组件要与其他实际对象发生依赖关系时,通过抽象来注入依赖的实际对象。依赖注入的 3 种实现方式分别是:接口注入( interface injection),set 注入(setter injection)和构造注入(constructor injection) 。-接口注入指的就是在接口中定义要注入的信息,并通过接口完成注入。具体步骤:(1),编写一个接口,各种数据库的注入将通过这个接口进行。(2), 任何想要使用数据库实例的类都必须实现这个接口;set 注入指的就是在接受注入

2、的类中定义一个 set 方法,并在参数中定义需要注入的元素。构造注入指的是在接受注入的类中定义一个构造方法,并在参数中定义需要注入的元素。构造函数是没有返回值的哦!构造函数式没有返回值的哦!spring 四种依赖注入方式博客分类: spring平常的 java 开发中,程序员在某个类中需要依赖其它类的方法,则通常是 new 一个依赖类再调用类实例的方法,这种开发存在的问题是 new 的类实例不好统一管理,spring 提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过 spring 容器帮我们 new 指定实例并且将实例注入到需要该对象的类中。依赖注入的另一种说法是“控制反转” ,通俗的

3、理解是:平常我们 new 一个实例,这个实例的控制权是我们程序员,而控制反转是指 new实例工作不由我们程序员来做而是交给 spring 容器来做。 -交给 spring 容器来管理;spring 有多种依赖注入的形式,下面仅介绍 spring 通过 xml 进行 IOC 配置的方式: Set 注入这是最简单的注入方式,假设有一个 SpringAction 类,需要实例化一个 SpringDao 对象,那么就可以定义一个 private 的 SpringDao 成员变量,然后创建 SpringDao 的 set 方法(这是 ioc 的注入入口):Java 代码 1. package com.b

4、less.springdemo.action; 2. public class SpringAction 3. /注入对象 springDao 4. private SpringDao springDao; 5. /一定要写被注入对象的 set 方法 6. public void setSpringDao(SpringDao springDao) 7. this.springDao = springDao; 8. 9. 10. public void ok() 11. springDao.ok(); 12. 13. 随后编写 spring 的 xml 文件, 中的 name 属性是 class

5、 属性的一个别名,class 属性指类的全名,因为在 SpringAction 中有一个公共属性 Springdao,所以要在标签中创建一个标签指定 SpringDao。 标签中的 name 就是SpringAction 类中的 SpringDao 属性名,ref 指下面,这样其实是 spring 将 SpringDaoImpl 对象实例化并且调用 SpringAction 的 setSpringDao 方法将SpringDao 注入:Java 代码 1. 2. 3. 4. 5. 6. 构造器注入- 通过带有参数的构造函数进行注入;这种方式的注入是指带有参数的构造函数注入,看下面的例子,我创建

6、了两个成员变量 SpringDao 和 User,但是并未设置对象的 set 方法,所以就不能支持第一种注入方式,这里的注入方式是在 SpringAction 的构造函数中注入,也就是说在创建 SpringAction 对象时要将 SpringDao 和 User 两个参数值传进来:Java 代码 1. public class SpringAction 2. /注入对象 springDao 3. private SpringDao springDao; 4. private User user; 5. /构造函数没有返回值; -构造函数没有返回值- 带有参数的构造函数6. public Sp

7、ringAction(SpringDao springDao,User user) 7. this.springDao = springDao; 8. this.user = user; 9. System.out.println(构造方法调用 springDao 和 user); 10. 11. 12. public void save() 13. user.setName(卡卡); 14. springDao.save(user); 15. 16. 在 XML 文件中同样不用的形式,而是使用 标签,ref 属性同样指向其它标签的 name 属性:Xml 代码 1. 2. 3. 4. 5.

8、6. 7. 8. 解决构造方法参数的不确定性,你可能会遇到构造方法传入的两参数都是同类型的,为了分清哪个该赋对应值,则需要进行一些小处理:下面是设置 index,就是参数位置:Xml 代码 1. 2. 3. 4. 另一种是设置参数类型:Xml 代码 1. 静态工厂的方法注入静态工厂顾名思义,就是通过调用静态工厂的方法来获取自己需要的对象,为了让spring 管理所有对象,我们不能直接通过 工程类.静态方法()来获取对象,而是依然通过spring 注入的形式获取:Java 代码 1. package com.bless.springdemo.factory; 2. 3. import com.b

9、less.springdemo.dao.FactoryDao; 4. import com.bless.springdemo.dao.impl.FactoryDaoImpl; 5. import com.bless.springdemo.dao.impl.StaticFacotryDaoImpl; 6. 7. public class DaoFactory 8. /静态工厂 9. public static final FactoryDao getStaticFactoryDaoImpl() 10. return new StaticFacotryDaoImpl(); 11. 12. 同样看关

10、键类,这里我需要注入一个 FactoryDao 对象,这里看起来跟第一种注入一模一样,但是看随后的 xml 会发现有很大差别 :Java 代码 1. public class SpringAction 2. /注入对象 3. private FactoryDao staticFactoryDao; 4. 5. public void staticFactoryOk() 6. staticFactoryDao.saveFactory(); 7. 8. /注入对象的 set 方法 9. public void setStaticFactoryDao(FactoryDao staticFactory

11、Dao) 10. this.staticFactoryDao = staticFactoryDao; 11. 12. Spring 的 IOC 配置文件,注意看指向的 class 并不是 FactoryDao 的实现类,而是指向静态工厂 DaoFactory,并且配置 factory-method=getStaticFactoryDaoImpl指定调用哪个工厂方法:Xml 代码 1. 2. 3. 4. 5. 6. 7. 8. 9. 实例工厂的方法注入实例工厂的意思是获取对象实例的方法不是静态的,所以你需要首先 new 工厂类,再调用普通的实例方法:Java 代码 1. public class

12、 DaoFactory 2. /实例工厂 3. public FactoryDao getFactoryDaoImpl() 4. return new FactoryDaoImpl(); 5. 6. 那么下面这个类没什么说的,跟前面也很相似,但是我们需要通过实例工厂类创建FactoryDao 对象:Java 代码 1. public class SpringAction 2. /注入对象 3. private FactoryDao factoryDao; 4. 5. public void factoryOk() 6. factoryDao.saveFactory(); 7. 8. 9. public void setFactoryDao(FactoryDao factoryDao) 10. this.factoryDao = factoryDao; 11. 12. 最后看 spring 配置文件:Xml 代码 1. 2. 3. 4. 5. 6. 7. 8. 9. 总结Spring IOC 注入方式用得最多的是(1)(2)种,多写多练就会非常熟练。另外注意:通过 Spring 创建的对象默认是单例的,如果需要创建多实例对象可以在标签后面添加一个属性:Java 代码 1.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号