- 法一。最常见,也是缺省,是调用spring的缺省工厂类
使用其静态方法preInstantiateSingletons ()
配置文件:最普通最基本的定义一个普通bean <bean id="DvdTypeDAOBean" class="com.machome.dvd.impl.DvdTypeDAO" > </bean> |
看日志: 2010-5-29 0:48:48 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons |
- 法二。使用用户自定义的工厂类的静态方法进行创建
定义工厂类,返回new实例 public class DvdTypeDAOFactory { public static DvdTypeDAO getInstance(){ return new DvdTypeDAO(); } } 这里只是简单的定义了一个工厂类,你可以定义更复杂的: 比如单例类(提高利用效率) 比如含有ThreadLocal属性的类(多线程下解决线程安全问题) |
spring配置文件中, bean的class不设要new的类,而是设成工厂类,然后后面加factory-method属性 <bean id="DvdTypeDAOBean" class="com.machome.core.impl.DvdTypeDAOFactory" factory-method="getInstance" /> |
- 法三。在spring中建立工厂类的Bean,然后调用该工厂bean建立真正的bean
public class DvdTypeDAOFactory { public DvdTypeDAO getInstance(){ return new DvdTypeDAO(); } } |
spring配置文件中 <bean id="DvdTypeDAOFactoryBean" class="com.machome.core.impl.DvdTypeDAOFactory" /> 这个工厂bean还是被spring的DefaultListableBeanFactory. preInstantiateSingletons创建 <bean id="DvdTypeDAOBean" factory-bean="DvdTypeDAOFactoryBean" factory-method="getInstance" /> |