spring学习----MethodInvokingFactoryBean(二)

26 篇文章 0 订阅

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值