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"/>