Spring MethodInvokingFactoryBean注入Method值

来源:互联网 发布:淘宝评价怎么删除 编辑:程序博客网 时间:2024/04/30 08:04

原文地址:http://blog.csdn.net/daryl715/article/details/1543630


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

配置文件:

<?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="Bean.superIOCmethod.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="Bean.superIOCmethod.Son">     <property name="age">       <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">          <property name="targetClass">            <value>Bean.superIOCmethod.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="Bean.superIOCmethod.Field">  </bean></beans>

测试代码

public static void main(String[] args) throws Exception {                String path=new Test().getClass().getResource("/").getPath();        String realpath=path.substring(1, path.length());        ApplicationContext context=new FileSystemXmlApplicationContext(realpath+"/superIOCmethod.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"));        System.out.println(context.getBean("javaversion")); }

结果:



person age is:test
person age is:static test


{java.runtime.name=Java(TM) 2 Runtime Environment, Standard Edition, sun.boot.library.path=D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/jre/bin, java.vm.version=1.5.0_08-b03, java.vm.vendor=Sun Microsystems Inc., java.vendor.url=http://java.sun.com/, path.separator=;, java.vm.name=Java HotSpot(TM) Client VM, file.encoding.pkg=sun.io, user.country=CN, sun.os.patch.level=Service Pack 2, java.vm.specification.name=Java Virtual Machine Specification, user.dir=E:/my/TestSpring, java.runtime.version=1.5.0_08-b03, java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment, java.endorsed.dirs=D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/jre/
.
.
.
.
com.genuitec.eclipse.j2eedt.core_5.1.0/data/libraryset/1.4/xml-apis.jar, java.vendor=Sun Microsystems Inc., file.separator=/, java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport.cgi, sun.io.unicode.encoding=UnicodeLittle, sun.cpu.endian=little, sun.desktop=windows, sun.cpu.isalist=pentium_pro+mmx pentium_pro pentium+mmx pentium i486 i386 i86}


1.5.0_08

阅读全文
0 0