Spring框架--依赖注入

Spring框架--依赖注入_第1张图片

 

 

 

 

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文件:

id="TextE"class="com.springtest.TextEditor">

ref="SpellC"/>   ###定义构造方法的参数

id="SpellC"class="com.springtest.SpellChecker"/>

 

 

当存在多个类需要注入时,有以下三种传递的方法

1,按照构造方法的参数顺序,在xml文件中依次声明

   Foo1" class="x.y.Foo">
      arg1
"/>
      arg2
"/>
  

 

2,使用构造方法参数的索引值传递

  
      arg1
"/>
      arg2
"/>
  

 

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文件:

id="textEditor2"class="com.springtest.TextEditor2">

name="spellChecker"ref="spellChecker"/>

id="spellChecker"class="com.springtest.SpellChecker">

 

 

注入内部 Beans

bean中注入子bean,将子bean类实例赋值给bean类的spellChecker 属性

id="textEditor2"class="com.springtest.TextEditor2">

name="spellChecker">

id="spellChecker"class="com.springtest.SpellChecker"/>

 

 

注入集合

Spring 提供了四种类型的集合的配置元素,如下所示:

元素

描述

它有助于连线,如注入一列值,允许重复。

它有助于连线一组值,但不能重复。

它可以用来注入名称-值对的集合,其中名称和值可以是任何类型。

它可以用来注入名称-值对的集合,其中名称和值都是字符串类型。

 

id="javacollection"class="com.springtest.JavaCollection">

name="addrList">

China

name="addrMap">

key="1"value="China"/>

name="addrSet">

China

name="addrProp">

key="one">China

 

你可能感兴趣的:(Spring框架--依赖注入)