1. 使用构造器java
<bean id="sysUserService" class="com.xykj.blank.service.impl.SysUserServiceImpl"/>
2.使用静态工厂spring
<bean id="sysUserService" class="com.xykj.blank.service.StaticFactoryBean" factory-method="getSysUserService"></bean>
public class StaticFactoryBean { public static SysUserService getSysUserService(){ return new SysUserServiceImpl(); } }
3.实例工厂sql
<bean id="factoryBean" class="com.xykj.blank.service.FactoryBean"/> <bean id="sysUserService" factory-bean="factoryBean" factory-method="getSysUserService"/>
public class FactoryBean { public SysUserService getSysUserService(){ return new SysUserServiceImpl(); } }
4. 实现 org.springframework.beans.factory.FactoryBeanide
<bean id="sysUserService" class="com.xykj.blank.service.FactoryBean"/>
public class FactoryBean implements org.springframework.beans.factory.FactoryBean<SysUserService> { @Override public SysUserService getObject() throws Exception { return new SysUserServiceImpl(); } @Override public Class<?> getObjectType() { return SysUserServiceImpl.class; } @Override public boolean isSingleton() { return false; } }
spring 自带 的FactoryBeanthis
MethodInvokingFactoryBean 调用普通方法code
用法 :xml
public final class Helper { private static Secret secret; private Helper () {} public static void setSecret(Secret secret) { this.secret = secret; } }
以下代码,如何设置 Secret ?
对象
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean" > <property name="staticMethod" value="com.aa.bb.Helper.setSecret"/> <property name="arguments"> <list> <ref bean="secret"/> </list> </property> </bean>
PropertyPathFactoryBean 调用getter方法get
<bean id="person" class="Person"> <property name="age" value="30"/> <property name="son"> <bean class="Son"> <property name="age" value="11"/> </bean> </property> </bean> <!-- 获取 person中的son值,即调用person.getSon() --> <bean class="org.springframework.beans.factory.config.PropertyPathFactoryBean"> <property name="targetBeanName" value="person" /> <property name="propertyPath" value="son"/> </bean> <!-- 获取 person中的son值,即调用person.getSon().getAge() --> <bean class="org.springframework.beans.factory.config.PropertyPathFactoryBean"> <property name="targetBeanName" value="person" /> <property name="propertyPath" value="son.age"/> </bean> <!-- 获取person中son的age值,注入其余bean中 --> <bean class="Other" > <property name="age"> <!-- person.son.age 表示 取person.getSon().getAge() --> <bean id="person.son.age" class="org.springframework.beans.factory.config.PropertyPathFactoryBean"/> </property> </bean> <!-- PropertyPathFactoryBean 缩写 --> <util:property-path id="beanId" path="person.son.age">
FieldRetrievingFactoryBean 访问类或对象的Field值,包括静态域io
<bean class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean"> <property name="staticField" value="java.sql.Connection.TRSD"> </bean> <!-- 做为值 --> <bean> <proerty> <bean id="java.sql.Connection.TRSD" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean" /> </property> </bean> <!-- 缩写 --> <util:constant static-field="java.sql.Connection.TRSD"/>