Spring之配置详解

目录

配置详解

bean元素

id

name

class

scope

init-method

destroy-method

factory-method

创建对象方式

空参构造(默认)

静态工厂

 实例工厂

分模块配置


配置详解

  • 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"/>

猜你喜欢

转载自blog.csdn.net/mmake1994/article/details/81702876
今日推荐