Spring的注入类型(Injection type of Spring)
来源:互联网 发布:淘宝基础店铺全屏代码 编辑:程序博客网 时间:2024/06/17 01:01
Set injection
Constructor injection
Static factory method injection
Instance factory method injection
refer:http://blessht.iteye.com/blog/1162131
In the usual java development,a method for programmer to relay on other classes in a class,
is usually a new dependent class to call the class instance method,this development model is the problem of new class instance is not a unified management,Spring put forward the idea of dependency injection.
Set Injection
package com.bless.springdemo.action; public class SpringAction { //注入对象springDao private SpringDao springDao; //一定要写被注入对象的set方法 public void setSpringDao(SpringDao springDao) { this.springDao = springDao; } public void ok(){ springDao.ok(); } }
Configuration in XML
<!--配置bean,配置后该类由spring管理--> <bean name="springAction" class="com.bless.springdemo.action.SpringAction"> <!--(1)依赖注入,配置当前类中相应的属性--> <property name="springDao" ref="springDao"></property> </bean> <bean name="springDao" class="com.bless.springdemo.dao.impl.SpringDaoImpl"></bean>
Constructor injection
public class SpringAction { //注入对象springDao private SpringDao springDao; private User user; public SpringAction(SpringDao springDao,User user){ this.springDao = springDao; this.user = user; System.out.println("构造方法调用springDao和user"); } public void save(){ user.setName("卡卡"); springDao.save(user); } }
Configuration in XML
<bean name="springAction" class="com.bless.springdemo.action.SpringAction"> <!--(2)创建构造器注入,如果主类有带参的构造方法则需添加此配置--> <constructor-arg ref="springDao"></constructor-arg> <constructor-arg ref="user"></constructor-arg> </bean> <bean name="springDao" class="com.bless.springdemo.dao.impl.SpringDaoImpl"></bean> <bean name="user" class="com.bless.springdemo.vo.User"></bean>
****When the constructor has many parameters of the same type,bean does not known the descendants of the order of the parameters.
<bean name="springAction" class="com.bless.springdemo.action.SpringAction"> <constructor-arg index="0" ref="springDao"></constructor-arg> <constructor-arg index="1" ref="user"></constructor-arg> </bean> <bean name="springDao" class="com.bless.springdemo.dao.impl.SpringDaoImpl"></bean> <bean name="user" class="com.bless.springdemo.vo.User"></bean>
Static factory method injection
package com.bless.springdemo.factory; import com.bless.springdemo.dao.FactoryDao; import com.bless.springdemo.dao.impl.FactoryDaoImpl; import com.bless.springdemo.dao.impl.StaticFacotryDaoImpl; public class DaoFactory { //静态工厂 public static final FactoryDao getStaticFactoryDaoImpl(){ return new StaticFacotryDaoImpl(); } }
public class SpringAction { //注入对象 private FactoryDao staticFactoryDao; public void staticFactoryOk(){ staticFactoryDao.saveFactory(); } //注入对象的set方法 public void setStaticFactoryDao(FactoryDao staticFactoryDao) { this.staticFactoryDao = staticFactoryDao; } }
Configuration in XML
<!--配置bean,配置后该类由spring管理--> <bean name="springAction" class="com.bless.springdemo.action.SpringAction" > <!--(3)使用静态工厂的方法注入对象,对应下面的配置文件(3)--> <property name="staticFactoryDao" ref="staticFactoryDao"></property> </property> </bean> <!--(3)此处获取对象的方式是从工厂类中获取静态方法--> <bean name="staticFactoryDao" class="com.bless.springdemo.factory.DaoFactory" factory-method="getStaticFactoryDaoImpl"></bean>
Instance factory method injection
public class DaoFactory { //实例工厂 public FactoryDao getFactoryDaoImpl(){ return new FactoryDaoImpl(); } }
public class SpringAction { //注入对象 private FactoryDao factoryDao; public void factoryOk(){ factoryDao.saveFactory(); } public void setFactoryDao(FactoryDao factoryDao) { this.factoryDao = factoryDao; } }
Configuration in XML
<!--配置bean,配置后该类由spring管理--> <bean name="springAction" class="com.bless.springdemo.action.SpringAction"> <!--(4)使用实例工厂的方法注入对象,对应下面的配置文件(4)--> <property name="factoryDao" ref="factoryDao"></property> </bean> <!--(4)此处获取对象的方式是从工厂类中获取实例方法--> <bean name="daoFactory" class="com.bless.springdemo.factory.DaoFactory"></bean> <bean name="factoryDao" factory-bean="daoFactory" factory-method="getFactoryDaoImpl"></bean>
0 0
- Spring的注入类型(Injection type of Spring)
- Spring笔记之七(Types of Injection) Spring的三种依赖注入实现类型
- Constructor injection type ambiguities in Spring /使用Spring时,构造函数注入的歧义
- Spring3注入类型(Injection Type)
- spring注入失败 Injection of resource dependencies failed
- Spring之注入类型(DI:dependency injection)
- Spring 集合注入 [ Collection Injection ]
- Spring依赖注入(dependency injection)
- Spring的核心机制:依赖注入(Dependency Injection)
- Spring的核心--依赖注入(Dependency Injection)
- spring&Injection of resource dependencies failed&Bean named 'generalDao' must be of type [com.oracle
- 关于spring的注入类型
- 【spring框架】spring的注入类型剖析
- Constructor injection type ambiguities in Spring
- Constructor injection type ambiguities in Spring
- spring依赖注入(dependency injection)
- Spring核心原理:依赖注入Dependency Injection(控制反转Inversion of Control)
- Spring环境搭建之:控制反转(IoC Inversion of Control)与依赖注入(DI Depenency Injection)
- 密码安全的重要性
- Leetcode2 Add Two Numbers
- Android网络开源库-Retrofit(六)源码浅析-上
- 浅谈Android自定义View事件传递机制
- 详解javaScript闭包
- Spring的注入类型(Injection type of Spring)
- 页面压缩图片传到java后台
- FastDFS单台服务器一个tracker多个storage
- register code
- 某通信公司的Android面试题目
- csapp第三章读书笔记
- 10-10———今日学习总结
- 卸载 Office 2016 for Mac
- Android studio集成HotFix