Spring依赖关系配置(续)

四、注入方法返回值
<? xml version = " 1.0 "  encoding = " gb2312 " ?>
<! DOCTYPE beans PUBLIC  " -//SPRING//DTD BEAN//EN "
    
" http://www.springframework.org/dtd/spring-beans.dtd " >
< beans >
    
< bean id = " valueGenerrator "   class = " prolove.ValueGenerator " />
    
< bean id = " son5 "   class = " prolove.Son " >
        
< property name = " age " >
            
< bean  class = " org.springframework.beans.factory.config.
                MethodInvokingFactoryBean " >
                 < property name = " targetObject " >
                    
< ref local = " valueGenerator " >
                
</ property >
                
< property name = " targetMethod " >
                    
< value > getValue </ value >
                
</ property >
            
</ bean >
        
</ property >
    
</ bean >
</ beans >

public   class  ValueGenerator
{
    
public int getValue() {
        
return 2;
    }

    
public static int getStaticValue() {
        
return 9;
    }

}


public   class  SpringTest
{
    
public static void main(String[] args) {
        ApplicationContext ctx 
=
            
new FileSystemXmlApplicationContext("bean.xml");
        Son son5 
= (Son)ctx.getBean("son5");
        System.out.println(
"系统获取的son5的属性值:" + son5.getAge());
    }

}

执行结果如下:
[java]系统获取的son5的属性值:
2

<? xml version = " 1.0 "  encoding = " gb2312 " ?>
<! DOCTYPE beans PUBLIC  " -//SPRING//DTD BEAN//EN "
    
" http://www.springframework.org/dtd/spring-beans.dtd " >
< beans >
    
< bean id = " valueGenerrator "   class = " prolove.ValueGenerator " />
    
< bean id = " son4 "   class = " prolove.Son " >
        
< property name = " age " >

            
< bean  class = " org.springframework.beans.factory.config.
                MethodInvokingFactoryBean " >
                 < property name = " targetClass " >
                    
< value > prolove.ValueGenerator </ value >
                
</ property >
                
< property name = " targetMethod " >
                    
< value > getStaticValue </ value >
                
</ property >
            
</ bean >

        
</ property >
    
</ bean >
</ beans >

Son son4 
=  (Son)ctx.getBean( " son4 " );
System.out.println(
" 系统获取的son4的属性值: "   +  son4.getStaticAge());
执行结果如下:
[java]系统获取的son4的属性值:
9

<!-- 将静态方法返回值直接定义成bean -->
< bean id = " sysProps "   class = " org.springframework.beans.factory.config.
    MethodInvokingFactoryBean " >
     < property name = " targetClass " >
        
< value > java.lang.System </ value >
    
</ property >
    
< property name = " targetMethod " >
        
< value > getProperties </ value >
    
</ property >
</ bean >

< bean id = " javaVersion "   class = " org.springframework.beans.factory.config.
    MethodInvokingFactoryBean " >
     < property name = " targetObject " >< ref local = " sysProps " ></ property >
    
< property name = " targetMethod " >< value > getProperty </ value ></ property >
    
< property name = " arguments " >
        
< list >
            
< value > java.version </ value >
        
</ list >
    
</ property >
</ bean >

System.out.println(
" 系统获取Java版本: "   +  ctx.getBean( " javaVersion " ));
执行结果如下:
[java]系统获取Java版本:
1.5 .0_14

< bean id = " myBean "   class = " org.springframework.beans.factory.config.
    MethodInvokingFactoryBean " >
     < property name = " staticMethod " >
        
< value > prolove.MyClassFactory.getInstance </ value >
    
</ property >
</ bean >

五、强制初始化bean
< bean id = " beanOne "   class = " ExampleBean "  depends - on = " manager " >
    
< property name = " manager " >< ref local = " manager " /></ property >
</ bean >
< bean id = " manager "   class = " ManagerBean " />

六、自动装配
1 .byName规则
<? xml versin = " 1.0 "  encoding = " gb2312 " ?>
<! DOCTYPE beans PUBLIC " -//SPRING//DTD BEAN//EN "
    
" http://www.springframework.org/dtd/spring-beans.dtd " >
< beans >
    
< bean id = " chinese "   class = " prolove.Chinese "  autowire = " byName " />
    
< bean id = " gundog "   class = " prolove.Gungod " >
        
< property name = " name " >
            
< value > wangwang </ value >
        
</ property >
    
</ bean >
</ beans >

public   void  setGunDog(Dog dog)  {
    
this.dog = dog;
}


2 .byType规则
<? xml versin = " 1.0 "  encoding = " gb2312 " ?>
<! DOCTYPE beans PUBLIC " -//SPRING//DTD BEAN//EN "
    
" http://www.springframework.org/dtd/spring-beans.dtd " >
< beans >
    
< bean id = " chinese "   class = " prolove.Chinese "  autowire = " byType " />
    
< bean id = " gundog "   class = " prolove.Gundog " >
        
< property name = " name " >
            
< value > wangwang </ value >
        
</ property >
    
</ bean >
</ beans >

public   void  setDog(Dog dog)  {
    
this.dog = dog;
}


下面则不行
-->
<? xml versin = " 1.0 "  encoding = " gb2312 " ?>
<! DOCTYPE beans PUBLIC " -//SPRING//DTD BEAN//EN "
    
" http://www.springframework.org/dtd/spring-beans.dtd " >
< beans >
    
< bean id = " chinese "   class = " prolove.Chinese "  autowire = " byType " />
    
< bean id = " gundog "   class = " prolove.Gundog " >
        
< property name = " name " >
            
< value > wangwang </ value >
        
</ property >
    
</ bean >
    
< bean id = " petdog "   class = " prolove.Petdog " >
        
< property name = " name " >
            
< value > ohoh </ value >
        
</ property >
    
</ bean >
</ beans >

<? xml versin = " 1.0 "  encoding = " gb2312 " ?>
<! DOCTYPE beans PUBLIC " -//SPRING//DTD BEAN//EN "
    
" http://www.springframework.org/dtd/spring-beans.dtd " >
< beans >
    
< bean id = " chinese "   class = " prolove.Chinese "  autowire = " byNme " >
        
< property name = " Gundog " >
            
< ref local = " petdog " />
        
</ property >
    
</ bean >
    
< bean id = " gundog "   class = " prolove.Gundog " >
        
< property name = " name " >
            
< value > wangwang </ value >
        
</ property >
    
</ bean >
    
< bean id = " petdog "   class = " prolove.Petdog " >
        
< property name = " name " >
            
< value > ohoh </ value >
        
</ property >
    
</ bean >
</ beans >

七、依赖检查
public   class  Chinese  implements  Person  {
    
private Axe axe;
    
private int age = 0;
    
public Chinese() {
        System.out.println(
"Spring实例化主调Bean:Chinese实例...");
    }

    
//依赖注入Axe必需的setter方法
    public void setAxe(Axe axe) {
        
this.axe = axe;
    }

    
public void setAge(int age) {
        
this.age = age;
    }

    
//测试用方法
    public void useAxe() {
        System.out.println(axe.chop() 
+ " 此人年龄为: " + age);
    }

}

<? xml versin = " 1.0 "  encoding = " gb2312 " ?>
<! DOCTYPE beans PUBLIC " -//SPRING//DTD BEAN//EN "
    
" http://www.springframework.org/dtd/spring-beans.dtd " >
< beans >
    
< bean id = " steelAxe "   class = " prolove.SteelAxe " />
    
< bean id = " chinese "   class = " prolove.Chinese "  dependency - check = " all " >
        
< property name = " axe " >
            
< ref local = " steelAxe " />
        
</ property >
    
</ bean >
</ beans >

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值