第一节:HelloSpring(无)
加粗代表重要,斜体为不重要
Spring配置详解
0.Bean元素
1. Spring 三种对象创建的方式
目录结构
此次改动为com.eilas.b_create包
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 创建方式1 空参构造 !!重要 -->
<bean name="user" class="com.eilas.bean.User"></bean>
<!-- 创建方式2 静态工厂创建 调用UserFactory的createUser方法创建名为user2的对象.放入容器-->
<bean name="user2"
class="com.eilas.b_create.UserFactory"
factory-method="createUser"></bean>
<!-- 创建方式3:实例工厂创建
调用UserFactory对象的createUser2方法创建名为user3的对象.放入容器
-->
<bean name="user3"
factory-bean="suerFactory"
factory-method="createUser2"></bean>
<bean name="suerFactory"
class="com.eilas.b_create.UserFactory"></bean>
</beans>
UserFactory
package com.eilas.b_create;
import com.eilas.bean.User;
public class UserFactory {
public static User createUser() {
System.out.println("静态工厂创建User");
return new User();
}
public User createUser2(){
System.out.println("实例工厂创建User");
return new User();
}
}
Test_Create
package com.eilas.b_create;
import com.eilas.bean.User;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test_Create {
@Test
//创建方式1:空参构造(!!)
public void test01() {
ApplicationContext ac = new ClassPathXmlApplicationContext("com\\eilas\\b_create\\applicationContext.xml");
User u = (User) ac.getBean("user");
System.out.println(u);
}
@Test
//创建方式2:静态工厂
public void test02() {
ApplicationContext ac = new ClassPathXmlApplicationContext("com\\eilas\\b_create\\applicationContext.xml");
User u = (User) ac.getBean("user2");
System.out.println(u);
}
@Test
//创建方式3:实例工厂
public void test03() {
ApplicationContext ac = new ClassPathXmlApplicationContext("com\\eilas\\b_create\\applicationContext.xml");
User u = (User) ac.getBean("user3");
System.out.println(u);
}
}
测试结果
2. Scope
使用:在bean中定义
<!--静态工厂创建 调用UserFactory的createUser方法创建名为user2的对象.放入容器-->
<bean name="user2"
class="com.eilas.b_create.UserFactory"
factory-method="createUser" scope="singleton"></bean>
<!-- 创建方式3:实例工厂创建
调用UserFactory对象的createUser2方法创建名为user3的对象.放入容器
-->
<bean name="user3"
factory-bean="suerFactory"
factory-method="createUser2" scope="prototype"></bean>
<bean name="suerFactory"
class="com.eilas.b_create.UserFactory"></bean>
- singleton(单例) 是默认的,容器是使用时创建,大多数默认
- prototype(多例) 使用时才会创建,struts2中actionBean必须使用多例
3.生命周期
在测试方法使用以下方法才能看到销毁
((ClassPathXmlApplicationContext) ac).close(); //关闭容器
4. Spring的分模块配置
<!--在主配置xml文件导入其他spring配置文件-->
<import resource="com/eilas/b_create/applicationContext.xml"/>