有两种用法,一种是直接吧方法的返回值注入到实例的属性,二是用返回值定义成Bean
定义实体:
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;
}
}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/lib/endorsed, os.arch=x86, java.io.tmpdir=C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/, line.separator=
, java.vm.specification.vendor=Sun Microsystems Inc., user.variant=, os.name=Windows XP, sun.jnu.encoding=GBK, java.library.path=D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/jre/bin;.;C:/WINDOWS/system32;C:/WINDOWS;d:/sybase/CFG-1_0/bin;d:/sybase/OCS-12_5/dll;d:/sybase/OCS-12_5/lib3p;d:/sybase/OCS-12_5/bin;d:/sybase/ASE-12_5/dll;d:/sybase/ASE-12_5/bin;C:/WINDOWS/system32;C:/WINDOWS;C:/WINDOWS/System32/Wbem;d:/Program Files/Sybase/SQL Anywhere 8/win32;d:/Program Files/Sybase/Shared/win32;d:/Program Files/Sybase/Shared/Sybase Central 4.1;d:/Program Files/Sybase/PowerDynamo/win32;d:/Program Files/Sybase/Shared/PowerBuilder;d:/Program Files/Sybase/InfoMaker 9.0/Tutorial;d:/Program Files/Sybase/Shared/Web Targets;;d:/sybase/SQLRemote/dll;D:/Program Files/Rational/common;D:/java/jdk1.4/bin, java.specification.name=Java Platform API Specification, java.class.version=49.0, sun.management.compiler=HotSpot Client Compiler, os.version=5.1, user.home=C:/Documents and Settings/Administrator, user.timezone=Asia/Shanghai, java.awt.printerjob=sun.awt.windows.WPrinterJob, file.encoding=GBK, java.specification.version=1.5, java.class.path=E:/my/TestSpring/WebRoot/WEB-INF/classes;E:/my/TestSpring/WebRoot/WEB-INF/lib/jstl.jar;E:/my/TestSpring/WebRoot/WEB-INF/lib/standard.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/spring-core.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/spring-beans.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/spring-context.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/jakarta-commons/commons-attributes-api.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/jakarta-commons/commons-attributes-compiler.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/jakarta-commons/commons-beanutils.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/jakarta-commons/commons-collections.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/jakarta-commons/commons-digester.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/jakarta-commons/commons-lang.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/jakarta-commons/commons-logging.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/dom4j/dom4j-1.6.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/dom4j/jaxen-1.1-beta-4.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/log4j/log4j-1.2.13.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/spring-aop.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/cglib/cglib-nodep-2.1_3.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/spring-dao.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/spring-hibernate.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/spring-jdbc.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/spring-orm.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/antlr/antlr-2.7.5H3.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/jakarta-commons/commons-dbcp.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/jakarta-commons/commons-pool.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/c3p0/c3p0-0.9.0.4.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/ehcache/ehcache-1.1.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/hibernate/hibernate3.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/hibernate/hibernate-annotations.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/ibatis/ibatis-sqlmap.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/ibatis/ibatis-sqlmap-2.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/ibatis/ibatis-common-2.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/jdo/jdo2.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/jotm/jotm.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/jotm/xapool.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/ojb/db-ojb-1.0.4.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/toplink/toplink-api.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/spring-web.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/spring-webmvc.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/cos/cos.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/jakarta-commons/commons-fileupload.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/jakarta-commons/commons-httpclient.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/oro/jakarta-oro-2.0.8.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/velocity/velocity-1.4.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/velocity/velocity-tools-generic-1.2.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/velocity/velocity-tools-view-1.2.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/freemarker/freemarker.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/itext/itext-1.3.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/jasperreports/jasperreports-1.0.3.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/poi/poi-2.5.1.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.1.0/data/1.2/lib/dependencies/jexcelapi/jxl.jar, user.name=Administrator, java.vm.specification.version=1.0, java.home=D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/jre, sun.arch.data.model=32, user.language=zh, java.specification.vendor=Sun Microsystems Inc., awt.toolkit=sun.awt.windows.WToolkit, java.vm.info=mixed mode, java.version=1.5.0_08, java.ext.dirs=D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/jre/lib/ext, sun.boot.class.path=D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/jre/lib/rt.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/jre/lib/i18n.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/jre/lib/sunrsasign.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/jre/lib/jsse.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/jre/lib/jce.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/jre/lib/charsets.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/jre/classes;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.j2eedt.core_5.1.0/data/libraryset/1.4/activation.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.j2eedt.core_5.1.0/data/libraryset/1.4/javax.servlet.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.j2eedt.core_5.1.0/data/libraryset/1.4/javax.servlet.jsp.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.j2eedt.core_5.1.0/data/libraryset/1.4/jboss-j2ee.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.j2eedt.core_5.1.0/data/libraryset/1.4/jboss-jaxrpc.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.j2eedt.core_5.1.0/data/libraryset/1.4/jboss-jsr77.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.j2eedt.core_5.1.0/data/libraryset/1.4/jboss-saaj.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.j2eedt.core_5.1.0/data/libraryset/1.4/mail.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/com.genuitec.eclipse.j2eedt.core_5.1.0/data/libraryset/1.4/namespace.jar;D:/Program Files/MyEclipse Enterprise Workbench 5.1.0 GA/myeclipse/eclipse/plugins/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
本文介绍了一种使用Spring框架的IOC容器进行方法注入的方式,包括非静态方法与静态方法的注入过程,并展示了如何通过配置文件实现方法返回值作为Bean的实例化。

609

被折叠的 条评论
为什么被折叠?



