目录
三、标签inimethod/destroy method实现
四、接口InitializingBean/DisposableBean实现
一、初始化以及销毁
1.通过标签实现
(1)初始化:使用init-method
(2)销毁:使用destory-method
2.通过接口实现
(1)初始化:Bean实现InitializingBean接口初始化
(2)销毁:Bean实现DisposableBean接口销毁
二、环境
1.pom.xml文件
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<!--单元测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
2.Spring.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"
default-autowire="byName"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd">
</beans>
三、标签inimethod/destroy method实现
1.代码Bean类
package com.spring.ioc;
/**
* Created by Administrator on 2019/10/26.
*/
public class Bean {
//初始化逻辑
public void onInit(){
System.out.println("Bean.onInit 通过标签实现");
}
//销毁逻辑
public void onDestroy(){
System.out.println("Bean.onDestroy 通过标签实现");
}
}
2.交由spring管理:Spring.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"
xmlns:c="http://www.springframework.org/schema/c"
xmlns:p ="http://www.springframework.org/schema/p"
default-autowire="byName"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd"
default-lazy-init="true"
>
<bean class="com.spring.ioc.Bean" id="bean"
init-method="onInit"
destroy-method="onDestroy"/>
</beans>
3.测试代码
package com.spring.ioc;
import org.junit.Test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* Created by Administrator on 2019/10/26.
*/
public class testcode {
@Test
public void test(){
AbstractApplicationContext context=new ClassPathXmlApplicationContext("spring.xml");
Bean bean=context.getBean("bean", Bean.class);
System.out.println("bean = " + bean);
//spring上下文销毁
context.close();
}
}
结果:
Bean.onInit 通过标签实现
bean = com.spring.ioc.Bean@5e853265
Bean.onDestroy 通过标签实现
4.所有初始化和销毁方法相同
可以统一在spring.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"
xmlns:c="http://www.springframework.org/schema/c"
xmlns:p ="http://www.springframework.org/schema/p"
default-autowire="byName"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd"
default-lazy-init="true"
default-init-method="onInit"
default-destroy-method="onDestroy"
>
<bean class="com.spring.ioc.Bean" id="bean"
/>
</beans>
四、接口InitializingBean/DisposableBean实现
1.实现接口
package com.spring.ioc;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
/**
* Created by Administrator on 2019/10/26.
*/
public class Bean implements InitializingBean,DisposableBean{
//初始化逻辑
public void onInit(){
System.out.println("Bean.onInit 通过标签实现");
}
//销毁逻辑
public void onDestroy(){
System.out.println("Bean.onDestroy 通过标签实现");
}
//接口:销毁方法
public void destroy() throws Exception {
System.out.println("Bean.onDestroy 通过接口实现");
}
//接口:初始化方法
public void afterPropertiesSet() throws Exception {
System.out.println("Bean.onInit 通过接口实现");
}
}
2.优势
不需要修改spring配置文件
3.测试代码
package com.spring.ioc;
import org.junit.Test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* Created by Administrator on 2019/10/26.
*/
public class testcode {
@Test
public void test(){
AbstractApplicationContext context=new ClassPathXmlApplicationContext("spring.xml");
Bean bean=context.getBean("bean", Bean.class);
System.out.println("bean = " + bean);
//spring上下文销毁
context.close();
}
}
结果:
Bean.onInit 通过接口实现
Bean.onInit 通过标签实现
bean = com.spring.ioc.Bean@5a8806ef
Bean.onDestroy 通过接口实现
Bean.onDestroy 通过标签实现