2019独角兽企业重金招聘Python工程师标准>>>

《Spring Recipes》第二章笔记:Customizing Bean Initialization and Destruction

问题

用户想要指定Spring容器在创建完一个bean后,立刻调用一个PostConstruct方法;或者在销毁一个bean之前,必须调用一个PreDestroy方法。

解决方案

(1)实现InitializingBean或者DisposableBean接口,并实现的afterPropertiesSet()和destroy()方法。
(2)在<bean>元素的init-method或destroy-method属性指定方法名称。
(3)在PostConstruct方法方法上添加@PostConstruct注解。在PreDestroy方法上添加@PreDestroy注解。

实现InitializingBean或者DisposableBean接口

bean:
public class Cashier implements InitializingBean, DisposableBean {
... ...public void afterPropertiesSet() throws Exception {openFile();}public void destroy() throws Exception {closeFile();}
}

在<bean>元素的init-method或destroy-method属性指定方法名称

配置文件:
<bean id="cashier1" class="com.apress.springrecipes.shop.Cashier"
init-method="openFile" destroy-method="closeFile"><property name="name" value="cashier1" /><property name="path" value="c:/cashier" />
</bean>

使用注解

bean:
public class Cashier {
...@PostConstructpublic void openFile() throws IOException {File logFile = new File(path, name + ".txt");writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(logFile, true)));}@PreDestroypublic void closeFile() throws IOException {writer.close();}
}

注意:

(1)@PostConstruct和@PreDestroy注解是JSR-250注解,所以需要添加JSR-250的依赖。
(2)必须在容器中注册CommonAnnotationBeanPostProcessor实例,Spring容器才能出来这些注解。
注册方式:
a.直接注册实例:
<beans ...>
...
<bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor" /><bean id="cashier1" class="com.apress.springrecipes.shop.Cashier">
<property name="name" value="cashier1" />
<property name="path" value="c:/cashier" />
</bean>
</beans>

b.添加<context:annotation-config />配置:

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd"><context:annotation-config />
...
</beans>

转载于:https://my.oschina.net/pkpk1234/blog/57859

《Spring Recipes》第二章笔记:Customizing Bean Initiali...相关推荐

  1. 《Spring Recipes》第二章笔记:Creating Beans by Invokin...

    2019独角兽企业重金招聘Python工程师标准>>> <Spring Recipes>第二章笔记:Creating Beans by Invoking an Insta ...

  2. 算法图解第二章笔记与习题(选择排序)

    算法图解第二章笔记与习题(选择排序) 文章目录 算法图解第二章笔记与习题(选择排序) 2.2 数组和链表 2.2.1 链表 2.2.2 数组 2.2.3 数组和链表的读取.插入和删除操作的时间复杂度 ...

  3. 计算机网络(中科大郑烇)第二章笔记

    文章目录 第二章 应用层 0.总结 1.应用层协议原理 2.Web and HTTP 2.1 Web与HTTP的一些术语 2.2 HTTP概述 2.3 HTTP连接 2.4 HTTP请求报文 2.5 ...

  4. Linux就该这么学第二章笔记~

    文章目录 linux就该这么学第2章笔记 二.常用命令 2.1命令格式 2.2常用系统工作命令 2.3系统状态检测命令 2.4查找定位文件命令 2.5文本文件编辑命令 2.6文件目录管理命令 linu ...

  5. 计算机组成原理|第二章(笔记)

    目录 第二章 计算机的发展及应用 2.1 计算机的发展史 2.1.1 计算机的生产和发展 2.1.2 微型计算机的出现和发展 2.1.3 软件技术的兴起与发展 2.2 计算机的应用 2.3 计算机的展 ...

  6. SpringBoot集成Spring Security —— 第二章自动登录

    文章目录 一.修改login.html 二.两种实现方式 2.1 Cookie 存储 2.2 数据库存储 2.2.1 基本原理 2.2.2 代码实现 三.运行程序 在上一章:SpringBoot集成S ...

  7. 《Head First设计模式》第二章笔记 观察者模式

    背景 客户有一个WeatherData对象,负责追踪温度.湿度和气压等数据.现在客户给我们提了个需求,让我们利用WeatherData对象取得数据,并更新三个布告板:目前状况.气象统计和天气预报. W ...

  8. 【离散数学】第二章 笔记(完)

    写在前面 是复习的笔记.截图是老师的课件. 2.1 谓词 谓词的概念与表示: 谓词:用来刻划一个个体的性质或多个个体之间关系的词,常用大写字母P, Q, R-来表示. 客体:可以独立存在的事物称为客体 ...

  9. TCP/IP第二章笔记链路层协议

    二.链路层 2.1 引言 链路层由三个目的: 主要为IP模块发送和接受IP数据包: 为ARP模块发送请求和接受ARP应答: 为RARP发送RARP请求和接收RARP应答: TCP/IP协议支持不同的链 ...

最新文章

  1. python 正则括号的使用及踩坑
  2. HDU 1285--确定比赛名次【拓扑排序 amp;amp; 邻接表实现】
  3. 马上要毕业了,要就业了。。担忧啊
  4. 敲诈英伟达的竟然是一群未成年???
  5. iSCSI 2-环境搭建一
  6. c语言求今年第m月的天数,《C语言及程序设计》实践参考——当年第几天(数组方案)...
  7. URAL 1992 CVS 可持久化链栈
  8. html5绿色视频播放器,7款很棒的 HTML5 视频播放器
  9. 【学习笔记】吉司机线段树
  10. 使用Cisco Packet Tracer之图解无线网络全网互联
  11. python怎么读取txt数据_对python .txt文件读取及数据处理方法总结
  12. Kali离线安装Nessus及过程中可能遇到的问题解决方案
  13. python简单网格五子棋_python实现简单五子棋游戏
  14. 尚医通 (二十)就诊人用户管理 | 平台用户管理
  15. Mybase7延长试用期
  16. mysql支持多语言_MySQL整理以存储未知语言的多语言数据
  17. Ultra-Fast-Lane-Detection-V2最新车道线检测算法
  18. Fedora 14 安装 DDD过程
  19. 0_PROLOGUE_superbeyone_新浪博客
  20. JAVA 极光推送后台实现触发,推送自定义消息、通知、定时推送、批量推送

热门文章

  1. react实现浏览器自动刷新_react调用什么刷新页面
  2. 鸿蒙系统适配的电脑,鸿蒙来了!华为正式发布操作系统 适配手机电脑多类型设备...
  3. html5 新标签xss,HTML5 localStorageXSS漏洞
  4. pytroch model??(查看官方模型写法)
  5. java表示学生信息的类Student,并输出相关信息
  6. 计算机关闭远程桌面 共享功能,win7旗舰版系统优化禁止用远程桌面共享的解决方法...
  7. php把这两个二维数组合并,两个二维数组的合并
  8. tomcat上的javaweb项目如何将ip地址更换为域名_Java Web 路线规划
  9. 基于Pytorch的BERT-IDCNN-BILSTM-CRF中文实体识别实现
  10. Top3获奖金10万,Seq2seq对话系统设计方案