热门标签 | 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"/>

 










推荐阅读
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
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社区 版权所有