Spring(6):Bean初始化以及销毁逻辑实现

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/u010886217/article/details/102755169

目录

一、初始化以及销毁

1.通过标签实现

2.通过接口实现

二、环境

1.pom.xml文件

2.Spring.xml

三、标签inimethod/destroy method实现

1.代码Bean类

2.交由spring管理:Spring.xml

3.测试代码

4.所有初始化和销毁方法相同

四、接口InitializingBean/DisposableBean实现

1.实现接口

2.优势

3.测试代码


一、初始化以及销毁

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 通过标签实现

猜你喜欢

转载自blog.csdn.net/u010886217/article/details/102755169