@yudesong
2018-02-16T13:19:38.000000Z
字数 2553
阅读 499
依赖注入
| 序号 | 依赖注入类型 & 描述 |
|---|---|
| Constructor-based dependency injection | 当容器调用带有多个参数的构造函数类时,实现基于构造函数的 DI,每个代表在其他类中的一个依赖关系 |
| Setter-based dependency injection | 基于 setter 方法的 DI 是通过在调用无参数的构造函数或无参数的静态工厂方法实例化 bean 之后容器调用 beans 的 setter 方法来实现的 |
代码实例
public class User {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}}
Beans.xml
<bean id="user" class="com.bean.User"><property name="name"><value>yudesong</value></property></bean><bean id="user" class="com.bean.User"><constructor-arg value="name" index="0"></constructor-arg></bean>
TextEditor.java
public class TextEditor {private SpellChecker spellChecker;// a setter method to inject the dependency.public void setSpellChecker(SpellChecker spellChecker) {System.out.println("Inside setSpellChecker." );this.spellChecker = spellChecker;}// a getter method to return spellCheckerpublic SpellChecker getSpellChecker() {return spellChecker;}public void spellCheck() {spellChecker.checkSpelling();}}
SpellChecker.java
public class SpellChecker {public SpellChecker(){System.out.println("Inside SpellChecker constructor." );}public void checkSpelling(){System.out.println("Inside checkSpelling." );}}
Beans.xml
<bean id="textEditor" class="com.tutorialspoint.TextEditor"><property name="spellChecker"><bean id="spellChecker" class="com.tutorialspoint.SpellChecker"/></property></bean>
Spring 提供了四种类型的集合的配置元素
| 元素 | 描述 |
|---|---|
| <list> | 它有助于连线,如注入一列值,允许重复 |
| <set> | 它有助于连线一组值,但不能重复 |
| <map> | 它可以用来注入名称-值对的集合,其中名称和值可以是任何类型 |
| <props> | 它可以用来注入名称-值对的集合,其中名称和值都是字符串类型 |
List addressList;Set addressSet;Map addressMap;Properties addressProp;<!-- Definition for javaCollection --><bean id="javaCollection" class="com.tutorialspoint.JavaCollection"><!-- results in a setAddressList(java.util.List) call --><property name="addressList"><list><value>INDIA</value><value>Pakistan</value><value>USA</value><value>USA</value></list></property><!-- results in a setAddressSet(java.util.Set) call --><property name="addressSet"><set><value>INDIA</value><value>Pakistan</value><value>USA</value><value>USA</value></set></property><!-- results in a setAddressMap(java.util.Map) call --><property name="addressMap"><map><entry key="1" value="INDIA"/><entry key="2" value="Pakistan"/><entry key="3" value="USA"/><entry key="4" value="USA"/></map></property><!-- results in a setAddressProp(java.util.Properties) call --><property name="addressProp"><props><prop key="one">INDIA</prop><prop key="two">Pakistan</prop><prop key="three">USA</prop><prop key="four">USA</prop></props></property>//处理NULL<bean id="..." class="exampleBean"><property name="email"><null/></property></bean>//处理空字符串<bean id="..." class="exampleBean"><property name="email" value=""/></bean>