Spring(2)-Spring Dependency Injection (DI)
来源:互联网 发布:linux修改普通用户密码 编辑:程序博客网 时间:2024/06/06 07:31
package com.mkyong.output; import com.mkyong.output.IOutputGenerator; public class OutputHelper{IOutputGenerator outputGenerator; public void setOutputGenerator(IOutputGenerator outputGenerator){this.outputGenerator = outputGenerator;} }
In Spring frameowork, Dependency Injection (DI) design pattern is used to define the object dependencies between each other. It exits in two major types :
- Setter Injection
- Constructor Injection
1. Setter Injection
This is the most popular and simple DI method, it will injects the dependency via a setter method.
Example
A helper class with a setter method.
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="OutputHelper" class="com.mkyong.output.OutputHelper"><property name="outputGenerator"><ref bean="CsvOutputGenerator" /></property></bean> <bean id="CsvOutputGenerator" class="com.mkyong.output.impl.CsvOutputGenerator" /><bean id="JsonOutputGenerator" class="com.mkyong.output.impl.JsonOutputGenerator" /> </beans>
You just injects a ‘CsvOutputGenerator’ bean into ‘OutputHelper’ object via a setter method (setOutputGenerator).
2. Constructor Injection
This DI method will injects the dependency via a constructor.
Example
A helper class with a constructor.
package com.mkyong.output; import com.mkyong.output.IOutputGenerator; public class OutputHelper{IOutputGenerator outputGenerator; OutputHelper(IOutputGenerator outputGenerator){this.outputGenerator = outputGenerator;}}
A bean configuration file to declare the beans and set the dependency via constructor injection (constructor-arg tag).
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="OutputHelper" class="com.mkyong.output.OutputHelper"><constructor-arg><bean class="com.mkyong.output.impl.CsvOutputGenerator" /></constructor-arg></bean> <bean id="CsvOutputGenerator" class="com.mkyong.output.impl.CsvOutputGenerator" /><bean id="JsonOutputGenerator" class="com.mkyong.output.impl.JsonOutputGenerator" /> </beans>
You just injects a ‘CsvOutputGenerator’ bean into ‘OutputHelper’ object via a constructor.
Setter or Constructor injection?
There are no hard rule set by Spring framework, just use whatever type of DI that suit your project needs. However, due to the simplicity of the setter injection, it’s always selected for most of the scenarios.
Reference
1. http://en.wikipedia.org/wiki/Dependency_injection
- Spring Dependency Injection (DI)
- Spring Dependency Injection (DI)
- Spring(2)-Spring Dependency Injection (DI)
- IoC--Inversion of Contro and DI---Dependency Injection(Spring)
- Spring学习四:依赖注入DI(Dependency Injection)
- Spring之注入类型(DI:dependency injection)
- Spring 3 Dependency injection
- Spring依赖注入(dependency injection)
- Spring, DIP, dependency inversin, dependency injection
- DI, Dependency Injection
- Spring IoC容器和Dependency Injection模式
- 超简单Spring入门(一)Dependency Injection
- spring ,ioc ,dependency injection 的设计模式
- 小菜鸟学 Spring-Dependency injection(二)
- spring 随笔(一) bean & Dependency Injection
- spring依赖注入(dependency injection)
- 再谈angularjs DI(Dependency Injection)
- 依赖注入 Dependency Injection (DI)
- 同一个程序里调用多个BAPI需要注意的情况
- Spring(1)-Spring loosely coupled example
- 最大子数组乘积
- [归纳]PHP手册重读与整理-基本语法与类型
- 那是一种尊敬、一种祝福
- Spring(2)-Spring Dependency Injection (DI)
- 1024Max Sum Plus Plus
- 2440学习(一)—— NFS搭建
- 隧道适配器,本地连接过多的解决办法
- 我深深感觉到每一次呼吸里都充满了思念的韵味
- CherryPy installation on Android
- java基础--面向对象入门
- 招聘 JavaScript 程序员时应该问什么问题 ?
- sequence parameter sets参数解释