您的位置:首页 > 编程语言 > Java开发

spring学习----MethodInvokingFactoryBean(二)

2012-08-22 14:31 393 查看
org.springframework.beans.factory.config.MethodInvokingFactoryBean
说明:
1.把一个类的方法返回值注入到一个类的属性
2.把一个类的静态方法返回值注入到一个类的属性
3.spring的getBean则触发方法
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- 非静态方法,使用targetObject -->
<bean id="son" class="com.hao.MethodInvokingFactoryBean.Son">
<property name="age">
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject">
<ref local="value"/>
</property>
<property name="targetMethod">
<value>getValue</value>
</property>
</bean>
</property>
</bean>
<!-- 静态方法,无需使用targetObject,但要配置targetClass -->
<bean id="staticson" class="com.hao.MethodInvokingFactoryBean.Son">
<property name="age">
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetClass">
<value>com.hao.MethodInvokingFactoryBean.Field</value>
</property>
<property name="targetMethod">
<value>getStaticValue</value>
</property>
</bean>
</property>
</bean>

<!-- 将方法返回值定义成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>
<bean id="value" class="com.hao.MethodInvokingFactoryBean.Field">
</bean>
</beans>


package com.hao.MethodInvokingFactoryBean;
public class Field {
public static final String TEST_FIELD="welcom";
public String getValue(){
return "test";
}
public static String getStaticValue(){
return "static test";
}
}
package com.hao.MethodInvokingFactoryBean;
public class Person {
private Son son;
private String age;
public Son getSon() {
return son;
}
public void setSon(Son son) {
this.son = son;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
package com.hao.MethodInvokingFactoryBean;
public class Son {
private String age;
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}

package com.hao.MethodInvokingFactoryBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class SpringTestMain {
/**j
* @param args
*/
public static void main(String[] args) {
//String path=new SpringTestMain().getClass().getResource("/").getPath();
//String realpath=path.substring(1, path.length());
// System.out.println(path);
ApplicationContext context=new ClassPathXmlApplicationContext("com/hao/MethodInvokingFactoryBean/springContext.xml");//new FileSystemXmlApplicationContext(realpath+"/springContext.xml");
Son son1=(Son)context.getBean("son");
Son son2=(Son)context.getBean("staticson");

System.out.println("person age is:"+son1.getAge());
System.out.println("person age is:"+son2.getAge());
System.out.println(context.getBean("sysProps"));//建立bean就执行
System.out.println(context.getBean("javaversion"));

}
}


转载地址:https://sites.google.com/site/frenchleaf/jiu-aispring/spring-xue-xi----methodinvokingfactorybean
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: