Spring配置文件–生命周期
SpringTest .java:
package com.xxx.test;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.xx.dao.UserDao;
public class SpringTest {
@Test
public void test1() {
ApplicationContext app=new ClassPathXmlApplicationContext("application.xml");
UserDao userDao1=(UserDao)app.getBean("userDao");
// UserDao userDao2=(UserDao)app.getBean("userDao");
System.out.println(userDao1);
// System.out.println(userDao2);
((AbstractApplicationContext) app).close();//手动关闭
}
}
application.xml:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<bean id="userDao" class="com.impl.UserDaoimpl" scope="singleton" init-method="init" destroy-method="destroy">
</bean>
<!-- scope=singleton/prototype/request/session -->
</beans>
UserDaoimpl类:
package com.impl;
import com.xx.dao.UserDao;
public class UserDaoimpl implements UserDao{
//无参构建
public UserDaoimpl() {
System.out.println("UserDaoimpl创建-----");
}
public void init() {
System.out.println("初始化方法----");
}
public void destroy() {
System.out.println("销毁方法----");
}
public void save() {
System.out.println("save running");
// TODO Auto-generated method stub
}
}
Bean实例化的3种方式
无参构造
工厂静态
工厂实例
StaticFactory.java:
package com.xx.factory;
import com.impl.UserDaoimpl;
import com.xx.dao.UserDao;
public class StaticFactory {
//工厂静态方法实例化
public static UserDao getUserDao() {
return new UserDaoimpl();
}
}
application.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<!-- <bean id="userDao" class="com.impl.UserDaoimpl" scope="singleton" init-method="init" destroy-method="destroy"></bean> -->
<!-- scope=singleton/prototype/request/session -->
<bean id="userDao" class="com.xx.factory.StaticFactory" factory-method="getUserDao"></bean>
</beans>
UserDaoimpl.java
package com.impl;
import com.xx.dao.UserDao;
public class UserDaoimpl implements UserDao{
//无参构建
public UserDaoimpl() {
System.out.println("UserDaoimpl创建-----");
}
public void init() {
System.out.println("初始化方法----");
}
public void destroy() {
System.out.println("销毁方法----");
}
public void save() {
System.out.println("save running");
// TODO Auto-generated method stub
}
}
UserDao接口
package com.xx.dao;
public interface UserDao {
public void save();
}
SpringTest.java
package com.xxx.test;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.xx.dao.UserDao;
public class SpringTest {
@Test
public void test1() {
ApplicationContext app=new ClassPathXmlApplicationContext("application.xml");
UserDao userDao1=(UserDao)app.getBean("userDao");
// UserDao userDao2=(UserDao)app.getBean("userDao");
System.out.println(userDao1);
// System.out.println(userDao2);
((AbstractApplicationContext) app).close();//手动关闭
}
}
结果:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<!-- 1.无参构造方法实例化 -->
<!-- <bean id="userDao" class="com.impl.UserDaoimpl" scope="singleton" init-method="init" destroy-method="destroy"></bean> -->
<!-- scope=singleton/prototype/request/session -->
<!-- 2.静态工厂方法实例化 -->
<!--<bean id="userDao" class="com.xx.factory.StaticFactory" factory-method="getUserDao"></bean> -->
<!-- 3.工厂方法实例化 -->
<bean id="factory" class="com.xx.factory.DynamicFactory"></bean>
<bean id="userDao" factory-bean="factory" factory-method="getUserDao"></bean>
</beans>
package com.xx.factory;
import com.impl.UserDaoimpl;
import com.xx.dao.UserDao;
public class DynamicFactory {
//工厂实例方法
public UserDao getUserDao() {
return new UserDaoimpl();
}
}