Spring之定制bean的生命始末

    xiaoxiao2021-03-25  8

    有时候需要在bean的生命始末做一些自己的操作

    接口

    package com.hk.spring.ba06; public interface ISomeSerice { public String doFirst(); public void doSecond(); }

    接口实现类

    package com.hk.spring.ba06; public class ISomeServiceImpl implements ISomeSerice { public ISomeServiceImpl() { System.out.println("无参构造器被执行"); } public ISomeServiceImpl(int a) { System.out.println("无参构造器被执行"+a); } @Override public String doFirst() { System.out.println("执行doFirst"); return "hello spring"; } @Override public void doSecond() { System.out.println("执行doSecond"); } //普通方法,需要注册 public void initAfter(){ System.out.println("初始化之后"); } public void perDestroy(){ System.out.println("销毁之前"); } }

    bean配置

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- bean definitions here --> <!-- 注册 service对象 ISomeSerice iSomeService = new ISomeServiceImpl(); 创建的时间是Spring容器被初始化是时候 配置初始化后要执行的方法和销毁前执行的方法 --> <bean id="someService" class="com.hk.spring.ba06.ISomeServiceImpl" init-method="initAfter" destroy-method="perDestroy"/> </beans>

    测试方法

    package com.hk.spring.ba06; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Mytest { /** * 定制bean的生命始末 */ @Test public void test_1(){ //加载Spring配置文件 创建Spring容器对象 String resource = "/com/hk/spring/ba06/applicationContext.xml"; ApplicationContext ac = new ClassPathXmlApplicationContext(resource); //从容器中获取指定bean对象 ISomeSerice iSomeService = (ISomeSerice) ac.getBean("someService"); String result = iSomeService.doFirst(); System.out.println(result); iSomeService.doSecond(); // 销毁方法的执行有两个要求 // 一、被销毁的对象要是singleton,即单例的(默认就是单例的) // 二、容器要被显示的关闭(ApplicationContext没有close方法,但它的实现类有) ((ClassPathXmlApplicationContext) ac).close();; } }

    运行结果

    无参构造器被执行 初始化之后 执行doFirst hello spring 执行doSecond 销毁之前
    转载请注明原文地址: https://ju.6miu.com/read-200336.html

    最新回复(0)