DN学院讲师招募     Markdown编辑器轻松写博文     TOP 50 CTO坐镇直招     读文章说感想获好礼

通过Spring @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作

分类: Spring 2013-03-16 16:48 24901人阅读 评论(1) 收藏 举报

关于在spring  容器初始化 bean 和销毁前所做的操作定义方式有三种:

第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作

第二种是:通过 在xml中定义init-method 和  destory-method方法

第三种是: 通过bean实现InitializingBean和 DisposableBean接口

下面演示通过  @PostConstruct 和 @PreDestory

1:定义相关的实现类:

[java] view plaincopy
  1. package com.myapp.core.annotation.init;
  2. import javax.annotation.PostConstruct;
  3. import javax.annotation.PreDestroy;
  4. public class PersonService {
  5. private String  message;
  6. public String getMessage() {
  7. return message;
  8. }
  9. public void setMessage(String message) {
  10. this.message = message;
  11. }
  12. @PostConstruct
  13. public void  init(){
  14. System.out.println("I'm  init  method  using  @PostConstrut...."+message);
  15. }
  16. @PreDestroy
  17. public void  dostory(){
  18. System.out.println("I'm  destory method  using  @PreDestroy....."+message);
  19. }
  20. }

2:定义相关的配置文件:

[html] view plaincopy
  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. xmlns:context="http://www.springframework.org/schema/context"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
  7. http://www.springframework.org/schema/context
  8. http://www.springframework.org/schema/context/spring-context-3.1.xsd">
  9. <!-- <context:component-scan  base-package="com.myapp.core.jsr330"/> -->
  10. <context:annotation-config />
  11. <bean id="personService" class="com.myapp.core.annotation.init.PersonService">
  12. <property name="message" value="123"></property>
  13. </bean>
  14. </beans>

其中<context:annotation-config />告诉spring 容器采用注解配置:扫描注解配置;

测试类:

[java] view plaincopy
  1. package com.myapp.core.annotation.init;
  2. import org.springframework.context.ApplicationContext;
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;
  4. public class MainTest {
  5. public static void main(String[] args) {
  6. ApplicationContext  context = new ClassPathXmlApplicationContext("resource/annotation.xml");
  7. PersonService   personService  =  (PersonService)context.getBean("personService");
  8. personService.dostory();
  9. }
  10. }

测试结果:

I'm  init  method  using  @PostConstrut....123
I'm  destory method  using  @PreDestroy.....123

其中也可以通过申明加载org.springframework.context.annotation.CommonAnnotationBeanPostProcessor

类来告诉Spring容器采用的 常用 注解配置的方式:

只需要修改配置文件为:

[html] view plaincopy
  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. xmlns:context="http://www.springframework.org/schema/context"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
  7. http://www.springframework.org/schema/context
  8. http://www.springframework.org/schema/context/spring-context-3.1.xsd">
  9. <!-- <context:component-scan  base-package="com.myapp.core.jsr330"/> -->
  10. <!-- <context:annotation-config /> -->
  11. <bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor" />
  12. <bean id="personService" class="com.myapp.core.annotation.init.PersonService">
  13. <property name="message" value="123"></property>
  14. </bean>
  15. </beans>

同样可以得到以上测试的输出结果。

转载于:https://www.cnblogs.com/huboking/p/4403497.html

spring init相关推荐

  1. Spring Init Destory

    <beanid="initDestroy"class="com.sanmao.spring.ioc.InitDestroy"init-method=&qu ...

  2. 聊聊Spring Boot服务监控,健康检查,线程信息,JVM堆信息,指标收集,运行情况监控等!...

    来自:https://juejin.im/post/5e2179def265da3e152d2561 前言 去年我们项目做了微服务1.0的架构转型,但是服务监控这块却没有跟上.这不,最近我就被分配了要 ...

  3. Spring Boot 服务监控,健康检查,线程信息,JVM堆信息,指标收集,运行情况监控...

    作者:Richard_Yi 来源:http://39sd.cn/B2A0B 去年我们项目做了微服务1.0的架构转型,但是服务监控这块却没有跟上.这不,最近我就被分配了要将我们核心的微服务应用全部监控起 ...

  4. springboot原生mysql写法_【Rainbond最佳实践】Spring Boot框架配置MySQL

    Rainbond开源软件介绍: Rainbond是国内首个开源的生产级无服务器PaaS. 深度整合基于Kubernetes的容器管理.多类型CI/CD应用构建与交付.多数据中心的资源管理等技术,提供云 ...

  5. SpringBoot快速开发利器:Spring Boot CLI

    今日推荐 推荐一个 Java 接口快速开发框架干掉Random:这个类已经成为获取随机数的王者Docker + Intellij IDEA,提升 10 倍生产力!笑出腹肌的注释,都是被代码耽误的诗人! ...

  6. 快速创建springboot项目:使用http://start.spring.io/网页创建,使用IDEA的Spring Initializr创建,使用SpringBoot CLI创建

    1 快速创建SpringBoot项目 快速创建SpringBoot项目至少可以通过两种方式: 1.使用http://start.spring.io/网页版的创建 2.使用IDEA创建 1.1.通过访问 ...

  7. Spring Boot CMI 使用笔记

    Spring Boot 提供的优越性 1. 自动配置,不需要配置很多的bean, 会根据class 中的jar 文件来自动配置bean 2. 起步依赖,利用Sping starter强大的功能,只需简 ...

  8. spring boot简介_Spring Boot简介

    spring boot简介 在本教程中,我们将看一下Spring Boot,看看它与Spring框架有何不同. 我们还将讨论Spring Boot提供的各种功能. 什么是Spring Boot? 在开 ...

  9. yeoman_具有Spring Boot和Yeoman的单页Angularjs应用程序

    yeoman 我非常感谢yeoman之类的工具,这些工具提供了一种非常快速的方法来将不同的javascript库组合在一起成为一个一致的应用程序. Yeoman提供了UI层,如果您需要开发服务层和静态 ...

  10. 正义联盟的Spring靴

    正义联盟的黑暗时代已经来临,强大的Darkseid即将征服人类. 蝙蝠侠在<神力女超人>的帮助下,努力使联盟与一个关键方面失联. 适当的正义联盟成员管理系统. 由于时间不在他们身边,他们不 ...

最新文章

  1. js markdown chart flow
  2. python中PIL模块
  3. 王兴最好的半年结束了
  4. spark-jar冲突解决方案
  5. Teams Bot如何解析和发送 at 用户
  6. iOS进阶之正则表达式
  7. 看完这篇Redis缓存三大问题,够你和面试官battle几回合了
  8. 金店管理系统的几个经验和教训
  9. vim 系统剪切板及 ubuntu 无法使用 vim 系统剪贴板(或 :reg 无+号寄存器)
  10. SDUT OJ C语言实验——Hello World!(printf练习)
  11. 【无标题】对于_, predicted = torch.max(outputs.data, 1)的理解
  12. 【Unity】Unity 几何知识、弧度、三角函数、向量运算、点乘、叉乘
  13. VC中用代码移动CDockPane的位置
  14. CPU频率与内存频率的关系
  15. SSM之spring事务管理
  16. verbose=True
  17. 黑马程序员:IP地址:InetAddress类的介绍(无构造函数)
  18. 2022-2027年中国大米蛋白粉行业市场全景评估及发展战略规划报告
  19. 2020年甘肃省土地利用数据(矢量)
  20. 关于Image.FromFile方法处理图像出现内存不足的问题

热门文章

  1. 刘润:一个人优不优秀,就看这3件小事
  2. 想赚钱,你对钱敏感么?
  3. 同学,那些个证书没屌用!
  4. Nginx configure
  5. Kafka ACL使用实战
  6. 双系统win+ubuntu无法访问win的盘符
  7. Moss 2007 升级到 Moss2010 成功但界面仍然保持07?
  8. 强烈推荐深入浅出jBPM
  9. 实用高效的5个进度管理工具推荐,项目经理快马住!
  10. Jmeter(五)录制功能