javaEE Spring,Spring配置之Bean元素进阶,scope属性(单例、多例),生命周期属性(init-method、destroy-method)

Test.java(测试类):

package cn.xxx.demo;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import cn.xxx.bean.User;

public class Test {
	
	@Test
	//scope:singleton 单例
	//scope:prototype 多例
	public void fun1(){
		//1 创建容器对象
		ApplicationContext ac = new ClassPathXmlApplicationContext("cn/itcast/b_create/applicationContext.xml");
		//2 向容器"要"user对象
		User u1 = (User) ac.getBean("user");
		User u2 = (User) ac.getBean("user");
		
		System.out.println(u1==u2);//单例:true  多例:false
	}
	
	@Test
	//测试生命周期方法
	public void fun2(){
		//1 创建容器对象
		ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("cn/itcast/b_create/applicationContext.xml");
		//2 向容器"要"user对象
		User u = (User) ac.getBean("user");
		//3 打印user对象
		System.out.println(u);
		//强行关闭容器,触发销毁方法
		ac.close();
	}
}

src/applicationContext.xml(Spring配置文件,配置Bean元素):

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd ">

	<!-- scope:
			singleton:单例(默认)。 对象在Spring容器中只会存在一个
			prototype:多例。 对象会存在多个。(在获取该对象时才去创建,而不是在创建容器时创建;且创建的对象都是新对象)(整合Struts2时,ActionBean必须配置为多例)
			request(了解):web环境下,该对象与request请求的生命周期相同(不常用)。
			session(了解):web环境下,该对象与session的生命周期相同(不常用)。
		生命周期属性:
			init-method:初始化方法。对象创建之后,立即调用初始化方法。
			destroy-method:销毁方法。Spring容器在关闭并销毁所有容器中的对象之前调用。
			 -->
	<bean  name="user" class="cn.xxx.bean.User" 
		scope="singleton" 
		init-method="init" 
		destroy-method="destroy" ></bean>

</beans>

User.java(Spring容器管理的Bean对象):

package cn.xxx.bean;

public class User {
	
	
	public User() {
		System.out.println("User对象空参构造方法!!!!");
	}

	private String name;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	public void init(){
		System.out.println("我是初始化方法!");
	}

	public void destroy(){
		System.out.println("我是销毁方法!");
	}
	
}

猜你喜欢

转载自blog.csdn.net/houyanhua1/article/details/81950442