Spring 依赖注入
通过依赖注入的方式来管理Bean之间的依赖关系
依赖注入方法:
基于构造方法的依赖注入
Constructor-based dependency injection
基于设值方法的依赖注入
Setter-based dependency injection
基于构造函数的依赖注入
通过类的构造方法将需要使用的类传递到当前类
packagecom.springtest;
importorg.springframework.context.ApplicationContext;
importorg.springframework.context.support.ClassPathXmlApplicationContext;
publicclassMainText{
publicstaticvoidmain(Stringargs[]){
ApplicationContextcontext=newClassPathXmlApplicationContext("beans.xml");
TextEditorobj1=(TextEditor)context.getBean("TextE");
obj1.spellCheck();
}
}
packagecom.springtest;
publicclassTextEditor{
privateSpellCheckerspell;
publicTextEditor(SpellCheckerspell){
System.out.println("InsideTextEditorconstructor.");
this.spell=spell;
}
publicvoidspellCheck(){
spell.checkSpelling();
}
}
packagecom.springtest;
publicclassSpellChecker{
publicSpellChecker(){
System.out.println("InsideSpellCheckerconstructor.");
}
publicvoidcheckSpelling(){
System.out.println("InsidecheckSpelling.");
}
}
xml文件:
当存在多个类需要注入时,有以下三种传递的方法:
1,按照构造方法的参数顺序,在xml文件中依次声明
2,使用构造方法参数的索引值传递
3,使用type+value的形式传递
在当前类需要使用外部类时,可以通过本类的构造方法将外部类传递到本类,而不需要使用new方法获取
基于设值函数的依赖注入
使用设值方法传递外部类
packagecom.springtest;
importorg.springframework.context.ApplicationContext;
importorg.springframework.context.support.ClassPathXmlApplicationContext;
publicclassMainText2{
publicstaticvoidmain(String[]args){
ApplicationContextcontext=
newClassPathXmlApplicationContext("beans.xml");
TextEditor2te=(TextEditor2)context.getBean("textEditor2");
te.spellCheck();
}
}
packagecom.springtest;
publicclassTextEditor2{
privateSpellCheckerspellChecker;
publicvoidsetSpellChecker(SpellCheckerspellChecker){
System.out.println("InsidesetSpellChecker.");
this.spellChecker=spellChecker;
}
publicSpellCheckergetSpellChecker(){
returnspellChecker;
}
publicvoidspellCheck(){
spellChecker.checkSpelling();
}
}
packagecom.springtest;
publicclassSpellChecker{
publicSpellChecker(){
System.out.println("InsideSpellCheckerconstructor.");
}
publicvoidcheckSpelling(){
System.out.println("InsidecheckSpelling.");
}
}
xml文件:
注入内部 Beans
在bean中注入子bean,将子bean类实例赋值给bean类的spellChecker 属性
注入集合
Spring 提供了四种类型的集合的配置元素,如下所示:
元素 |
描述 |
|
它有助于连线,如注入一列值,允许重复。 |
|
它有助于连线一组值,但不能重复。 |
|
它可以用来注入名称-值对的集合,其中名称和值可以是任何类型。 |
|
它可以用来注入名称-值对的集合,其中名称和值都是字符串类型。 |