热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:bean的初始化和销毁

本文由编程笔记#小编为大家整理,主要介绍了bean的初始化和销毁相关的知识,希望对你有一定的参考价值。需求
本文由编程笔记#小编为大家整理,主要介绍了bean的初始化和销毁相关的知识,希望对你有一定的参考价值。


需求
1. bean需要在Spring实例化完成后,再去调用一个初始化方法来完成bean的初始化方法;
2. bean需要在Spring正常销毁之前,调用一个结束方法(销毁方法)去完成一些清理工作;


准备工作
创建接口/实现类/配置文件/测试类


1 package com.java._07_init_destory;
2
3 public interface ISomeBean {
4 void init();
5
6 void close();
7 }


1 package com.java._07_init_destory;
2
3 public class SomebeanImpl implements ISomeBean{
4
5 @Override
6 public void init() {
7 System.out.println("SomebeanImpl.init()");
8 }
9
10 @Override
11 public void close() {
12 System.out.println("SomebeanImpl.close()");
13 }
14
15 }


1 xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://www.springframework.org/schema/beans
5 http://www.springframework.org/schema/beans/spring-beans.xsd">
6
7 <bean id="someBean" class="com.java._07_init_destory.SomebeanImpl"/>
8
9 beans>


1 package com.java._07_init_destory;
2
3 import static org.junit.Assert.*;
4
5 import org.junit.Test;
6
7 public class SomebeanImplTest {
8
9 @Test
10 public void test() {
11
12 }
13
14 }

方式一:手动启动
1. 在配置文件中添加init-method属性和destroy-method属性


1 <bean id="someBean" class="com.java._07_init_destory.SomebeanImpl" init-method="init" destroy-method="close"/>

2.在测试类用AbstractApplicationContext抽象类


public class SomebeanImplTest {
private AbstractApplicationContext ctx;
@Test
public void test() {
ctx
= new ClassPathXmlApplicationContext("com/java/_07_init_destory/SomeBeanImplTest.xml");
ctx.close();
}
}

3.如果觉得测试类的ctx.close()比较low,还可以使用另外一种方式,同样可以调用配置文件中指定的关闭bean方法


1 ctx.registerShutdownHook();

方式二:自动启动

1.配置文件不变,同手动方式一样
2.在测试类运用ApplicationContext和注解
  ps:使用@ContextConfiguration标签,一定要保证**配置文件**在同包下,并且文件名格式为测试类名-context才行,否则报错.


1 @RunWith(SpringJUnit4ClassRunner.class)
2 @ContextConfiguration
3 public class SomebeanImplTest {
4 @Autowired
5 private ApplicationContext ctx;
6
7 private ISomeBean someBean;
8
9 @Test
10 public void test() {
11 someBean = ctx.getBean("someBean",ISomeBean.class);
12 }
13
14 }

补充
如果配置文件定义bean为多例,则不会调用关闭bean方法


1 <bean id="someBean" class="com.java._07_init_destory.SomebeanImpl" init-method="init" destroy-method="close" scope="prototype"/>

 










推荐阅读
  • spring boot使用jetty无法启动 ... [详细]
  • 本文介绍了一个使用Spring框架和Quartz调度器实现每周定时调用Web服务获取数据的小项目。通过详细配置Spring XML文件,展示了如何设置定时任务以及解决可能遇到的自动注入问题。 ... [详细]
  • 问题场景用Java进行web开发过程当中,当遇到很多很多个字段的实体时,最苦恼的莫过于编辑字段的查看和修改界面,发现2个页面存在很多重复信息,能不能写一遍?有没有轮子用都不如自己造。解决方式笔者根据自 ... [详细]
  • 一、Advice执行顺序二、Advice在同一个Aspect中三、Advice在不同的Aspect中一、Advice执行顺序如果多个Advice和同一个JointPoint连接& ... [详细]
  • 入门指南:使用FastRPC技术连接Qualcomm Hexagon DSP
    本文旨在为初学者提供关于如何使用FastRPC技术连接Qualcomm Hexagon DSP的基础知识。FastRPC技术允许开发者在本地客户端实现远程调用,从而简化Hexagon DSP的开发和调试过程。 ... [详细]
  • 本文详细介绍了如何在Spring框架中设置事件发布器、定义事件监听器及响应事件的具体步骤。通过实现ApplicationEventPublisherAware接口来创建事件发布器,利用ApplicationEvent类定义自定义事件,并通过ApplicationListener接口来处理这些事件。 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • JUnit下的测试和suite
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中 ... [详细]
  • Requests库的基本使用方法
    本文介绍了Python中Requests库的基础用法,包括如何安装、GET和POST请求的实现、如何处理Cookies和Headers,以及如何解析JSON响应。相比urllib库,Requests库提供了更为简洁高效的接口来处理HTTP请求。 ... [详细]
  • 本文介绍了如何通过C#语言调用动态链接库(DLL)中的函数来实现IC卡的基本操作,包括初始化设备、设置密码模式、获取设备状态等,并详细展示了将TextBox中的数据写入IC卡的具体实现方法。 ... [详细]
  • 从CodeIgniter中提取图像处理组件
    本指南旨在帮助开发者在未使用CodeIgniter框架的情况下,如何独立使用其强大的图像处理功能,包括图像尺寸调整、创建缩略图、裁剪、旋转及添加水印等。 ... [详细]
  • flea,frame,db,使用,之 ... [详细]
  • 在尝试启动Java应用服务器Tomcat时,遇到了org.apache.catalina.LifecycleException异常。本文详细记录了异常的具体表现形式,并提供了有效的解决方案。 ... [详细]
author-avatar
dhailing
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有