spring学习----MethodInvokingFactoryBean(二)

来源:互联网 发布:树的遍历递归算法 编辑:程序博客网 时间:2024/05/17 22:49

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