spring配置详解-初始化&销毁方法

关于生命周期属性,生命周期属性,啥意思呢,假设咱们的bean,生命周期属性指的是bean创建的时候,

如果希望有一些初始化的工作,你可以指定一个bean的方法,为他的初始化方法,那这样的话Spring每次创建完,

这个对象会先调用一下,这个init方法,来完成初始化工作,生命周期属性指的,咱们可以配置一个方法,作为

生命周期初始化方法,那Spring会在对象创建之后,立即调用,那生命周期属性,与初始化对应的还有一个,叫做

什么呢,销毁,也可以配置一个方法作为生命周期的销毁方法,那么配置销毁方法的话,那就是Spring容器在关闭前,

关闭是要销毁所有对象,关闭并销毁容器中所有对象之前调用,作为咱们的后处理工作,那咱们上面说的属性,叫做init-method,

前处理初始化,然后呢,第二个是destory-method

那这两个属性非常简单,配上一次就完事,那咱们给谁配呢,把scope属性先去掉,然后再来一个init-method,

这里来一个方法叫做init,然后再来一个方法destory-method,给他起名destory,当然起名字你知道要和谁对应啊,

方法名对应,所以我们要在User里添加两个方法,这个方法必须public void,方法名必须要和你配置的一样,init(),

咱们也就是打印一下,我是初始化方法,destory也没啥可说的,这里方法名要一样,destory(),销毁方法,接下来只要

测一下方法会不会调用,最基本的创建容器,获取对象,然后打印就完事了,最后打印一句话你会发现,咱们的初始化方法,

是不是调了,显然对象刚创建,
<?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 ">

	<!-- 创建方式1:空参构造方法 -->
	<bean name="user" class="com.learn.bean.User" init-method="init" destroy-method="destory"></bean>
	
	<!-- 创建方式2:静态工厂创建  
		 调用UserFactory的createUser方法创建名为user2的对象,放入容器
	-->
	<!-- <bean name="user2" class="com.learn.b_create.UserFactory" factory-method="createUser"></bean> -->
	
	<!-- 创建方式2:实例工厂创建  
	-->
	<!-- <bean name="user3" factory-bean="userFactory" factory-method="createUser2"></bean> -->
	
	<!-- <bean name="userFactory" class="com.learn.b_create.UserFactory"></bean> -->

</beans>
package com.learn.bean;

/**
 * @author Leon.Sun
 */
public class User {
	
	public User() {
		System.out.println("User空参构造方法");
	}
	
	private String name;
	
	private Integer age;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}
	
	public void init() {
		System.out.println("我是初始化方法!");
	}
	
	public void destory() {
		System.out.println("我是销毁方法!");
	}

}
	/**
	 * 测试咱们的生命周期方法
	 * 
	 */
	@Test
	public void fun5() {
		
		/**
		 * 1.创建容器
		 */
		ApplicationContext ac = new ClassPathXmlApplicationContext("com/learn/b_create/applicationContext.xml");
		
		/**
		 * 打印user对象
		 */
//		System.out.println(u);
		
	}
	
User空参构造方法
我是初始化方法!
创建出来就立刻初始化了,但是有个问题,销毁的方法到哪去了,是这样,现在这代码没销毁太正常不过了,

打印之后没有任何代码,这个时候等不到做销毁的操作,这个虚拟机停了,因为主线程运行完了,你要想看到这个效果,

怎么做呢,你还得加一块代码,ac点close方法,这个close方法是我强行打印出来的,那是因为,close方法在ApplicationContext

接口里面没有,它是声明在我们的实现类当中的,所以我拿实现类来接收,有了容器的关闭之后,再来执行一下这个代码
	/**
	 * 测试咱们的生命周期方法
	 * 
	 */
	@Test
	public void fun5() {
		
		/**
		 * 1.创建容器
		 */
		ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("com/learn/b_create/applicationContext.xml");
		
		/**
		 * 打印user对象
		 */
//		System.out.println(u);
		
		/**
		 * 关闭容器,触发销毁方法
		 */
		ac.close();
		
	}
User空参构造方法
我是初始化方法!
我是销毁方法!
销毁方法是不是打印了,在打印完User之后打印销毁方法,这就是咱们的生命周期,这是这两个配置

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值