目录
配置详解
-
bean元素
<bean id="user" name="user" class="com.mark.test.User" scope="singleton" init-method="init" destroy-method="destory"></bean>
id
根据id属性值得到配置对象。在Spring配置文件中会有多个bean标签,但它们的id属性值是不能相同的。Bean起名字时,在约束中采用的是ID约束——唯一,而且名字必须以字母开始,可以使用字母、数字、连字符、下划线、句号、冒号等,但id属性值不能有特殊符号
name
name属性的功能和id属性是一样的,开发中尽量使用name,name可以重复,可以使用特殊字符
class
要创建对象的类的全路径
scope
bean的作用范围,常用取值:singleton、prototype、request、session、globalSession
singleton:创建的对象是单例的,也是scope属性的默认值
public void func(){
//创建容器对象
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
//获取user对象
User u = (User) ac.getBean("user");
User u1 = (User) ac.getBean("user");
System.out.println(u == u1);
}
console:true
prototype:创建的对象是多实例的,上例中的console:false
request:web项目中,Spring创建一个Bean的对象,将对象存入request域中
session:web项目中,Spring创建一个Bean的对象,将对象存入session域中
globalSession:web项目,应用在Porlet环境,如果没有Porlet环境,那么globalSession相当于session。用在单点登录(即SSO,single sign on)上
init-method
作为Bean初始化的时候执行的方法
destroy-method
作为Bean销毁的时候执行的方法,spring容器在关闭并销毁所有容器中的对象之前调用
factory-method
创建对象方法:空参构造(默认)、静态工厂、实例工厂
-
创建对象方式
空参构造(默认)
创建对象时候,调用类里面的无参数的构造方法实现
<bean name="user" class="com.mark.test.User"></bean>
public class User {
private String name;
private Integer age;
public User() {
System.out.println("空参构造方法!");
}
}
静态工厂
创建一个工厂类,在工厂类中提供一个静态的方法,这个方法返回类的对象;调用工厂类的方法时候,直接使用类名.方法名即可以调用
<bean name="user1" class="com.mark.test.UserFactory" factory-method="createUser"></bean>
public class UserFactory {
public static User createUser(){
System.out.println("静态工厂调用");
return new User();
}
}
实例工厂
创建一个工厂类,在工厂类里面提供一个普通的方法,这个方法返回类对象;调用工厂类的方法时候,创建工厂类对象,使用对象调用方法即可
先将工厂类当做一个bean去解析执行,生成一个对象,然后再去执行工厂方法中的方法
<bean name="userFactory" class="com.mark.test.UserFactory"></bean>
<bean name="user2" factory-bean="userFactory" factory-method="createUser"></bean>
public class UserFactory {
public User createUser(){
System.out.println("实例工厂调用");
return new User();
}
}
-
分模块配置
在一个主配置文件中引入其他子配置文件
<import resource="com/mark/test/applicationContext.xml"/>