配置文件详解
1.bean
@Test
//测试Bean的scope
public void test1(){
ApplicationContext app=new ClassPathXmlApplicationContext("applicationContext.xml");
UseDao useDao1 = (UseDao) app.getBean("useDao");
UseDao useDao2 = (UseDao) app.getBean("useDao");
System.out.println(useDao1);
System.out.println(useDao2);
}
protopype测试:
Dao.impl.UseDaoImpl@67205a84
Dao.impl.UseDaoImpl@7d0587f1
singleton测试:
Dao.impl.UseDaoImpl@1c3a4799
Dao.impl.UseDaoImpl@1c3a4799
protopype每次都实例化一个新的对象,singleton每次都是一个对象
两种scope下bean的创建时机:
bean生命周期
<bean id="useDao" class="Dao.impl.UseDaoImpl" init-method="init" destroy-method="destroy"></bean>
public class UseDaoImpl implements UseDao {
public void init(){
System.out.println("初始化...");
}
public void destroy(){
System.out.println("销毁...");
}
}
bean的三种实例化方式:
- 无参构造方法实例化(重点掌握)
- 工厂静态方法实例化
<bean id="useDao" class="factory.StaticFactory" factory-method="getUseDao"></bean>
public class StaticFactory {
public static UseDao getUseDao(){
return new UseDaoImpl();
}
}
- 工厂动态方法实例化
<bean id="factory" class="factory.DynamicFactory"/>
<bean id="useDao" factory-bean="factory" factory-method="getUseDao"/>
public class DynamicFactory {
public UseDao getUseDao(){
return new UseDaoImpl();
}
}