网站首页 新闻首页 网页设计图形动画软件编程网站开发办公软件操作系统数据库网络技术认证考试范文资料黑客攻防 书籍教程 进入论坛

Spring依赖关系配置(续)

http://www.diybl.com/ 2007-12-6  网络 点击:  [ 评论 ]
文章搜索:    【点击打包该文章】



四、注入方法返回值
<?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>

 



欢迎光临DIY部落,点击这里查看更多文章教程   【点击打包该文章】
如果图片或页面不能正常显示请点击这里 站内搜索:   

文章评论

请您留言