转载请注明出处:http://blog.csdn.net/qq_26525215

本文源自【大学之旅_谙忆的博客】

分析

在我们实际开发的时候,经常会遇到在Bean使用之前或者之后做些必要的操作,Spring对Bean的生命周期的操作提供了支持。

有如下2种方式:
1、Java配置方式:使用@Bean的initMethod和destroyMethod(相当于xml配置的init-method和destroy-method)

2、注解方式:
利用JSR-250的@PostConstruct和@PreDestroy

友情提示:
进行本示例的演示,需要先配置好Maven和Spring哦、
见:【Spring】基于IntelliJ IDEA搭建Maven

示例

增加JSR250支持

<dependency><groupId>javax.annotation</groupId><artifactId>jsr250-api</artifactId><version>1.0</version>
</dependency>

使用@Bean形式的Bean

package cn.hncu.p2_3_2BeanLifecycle;/*** Created with IntelliJ IDEA.* User: 陈浩翔.* Date: 2016/11/14.* Time: 上午 11:19.* Explain:使用@Bean形式的Bean*/
public class BeanWayService {public BeanWayService() {super();System.out.println("初始化构造函数-BeanWayService:"+this.getClass());}public void init(){System.out.println("BeanWayService-init方法");}public void destroy(){System.out.println("BeanWayService-destroy方法");}
}

使用JSR250形式的Bean

package cn.hncu.p2_3_2BeanLifecycle;import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;/*** Created with IntelliJ IDEA.* User: 陈浩翔.* Date: 2016/11/14.* Time: 上午 11:23.* Explain:使用JSR250形式的Bean*/
public class JSR250WayService {public JSR250WayService() {super();System.out.println("初始化构造函数-JSR250WayService:"+this.getClass());}@PostConstruct//@PostConstruct这个注解表明该方法在构造函数执行之后执行public void init(){System.out.println("jsr250-init方法");}@PreDestroy//这个注解表明该方法在Bean销毁之前执行public void destroy(){System.out.println("jsr250-destroy方法");}
}

配置类

package cn.hncu.p2_3_2BeanLifecycle;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;/*** Created with IntelliJ IDEA.* User: 陈浩翔.* Date: 2016/11/14.* Time: 上午 11:29.* Explain:配置类*/
@Configuration
@ComponentScan("cn.hncu.p2_3_2BeanLifecycle")
public class PrePostConfig {//为BeanWayService准备的配置方法//initMethod和destroyMethod指定BeanWayService类的init和destroy方法在构造之后、Bean销毁之前执行@Bean(initMethod = "init",destroyMethod = "destroy")BeanWayService beanWayService(){return new BeanWayService();}//为JSR250WayService准备的配置方法@BeanJSR250WayService jsr250WayService(){return new JSR250WayService();}}

运行类

package cn.hncu.p2_3_2BeanLifecycle;import org.springframework.context.annotation.AnnotationConfigApplicationContext;/*** Created with IntelliJ IDEA.* User: 陈浩翔.* Date: 2016/11/14.* Time: 上午 11:33.* Explain:运行类*/
public class Main {public static void main(String[] args) {AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(PrePostConfig.class);BeanWayService beanWayService = context.getBean(BeanWayService.class);JSR250WayService jsr250WayService = context.getBean(JSR250WayService.class);context.close();}
}

运行结果

项目链接—具体包

转载请注明出处:http://blog.csdn.net/qq_26525215

本文源自【大学之旅_谙忆的博客】

【Spring】Spring常用配置-Bean的初始化和销毁(生命周期)相关推荐

  1. spring Bean的初始化和销毁生命周期方法

    使用注解定义Bean的初始化和销毁 Spring初始化bean或销毁bean时,有时需要作一些处理工作,因此spring可以在创建和拆卸bean的时候调用bean的两个生命周期方法. 回顾配置文件的写 ...

  2. 面试题------Spring中Bean的初始化以及销毁init-method、destory-method

    面试题------Spring中Bean的生命周期 通过Spring工厂,可以控制bean的生命周期. 在xml中配置Bean的初始化和销毁方法 通过init-method属性指定初始化后的调用方法. ...

  3. spring bean的初始化和销毁

    为什么80%的码农都做不了架构师?>>>    spring bean的初始化和销毁有3种形式: 1.通过注解@PostConstruct 和 @PreDestroy 方法实现初始化 ...

  4. spring Bean的初始化和销毁 (使用注解)

    使用注解定义Bean的初始化和销毁 Spring初始化bean或销毁bean时,有时需要作一些处理工作,因此spring可以在创建和拆卸bean的时候调用bean的两个生命周期方法. 回顾配置文件的写 ...

  5. spring boot之 Bean的初始化和销毁(4)

    1.java形式的配置方式:使用@bean的initMethod和destorymethod等同于init-method.destory-method java--Bean(还未交给spring管理) ...

  6. Spring IoC容器与Bean管理18:Bean对象的作用域及生命周期三:对象生命周期;

    说明: (1)本篇博客主要根据案例阐述对象的声明周期: (2)其中,比较重要的是注意下这个对应关系: (3)还有就是调用[registerShutdownHook()]销毁IoC容器: 目录 一:be ...

  7. Spring5 - Bean的初始化和销毁的4种方式

    文章目录 概述 方式一: 自行指定bean的初始化方法和bean的销毁方法 方式二: 通过 InitializingBean和DisposableBean 接口实现bean的初始化以及销毁方法 方式三 ...

  8. ApplicationContext和Bean的初始化和销毁

    本节来学习ApplicationContext和Bean的初始化和销毁 首先看一下ApplicationContext容器的初始化和销毁关闭过程. ApplicationContext启动的过程是在A ...

  9. Spring入门第一课:Spring基础与配置Bean

    1.入门 Spring是简化java开发的一个框架,其中IoC和AOP是Spring的两个重要核心.由于Spring是非侵入性的,通过Ioc容器来管理bean的生命周期,还整合了许多其他的优秀框架,所 ...

最新文章

  1. mysql无法远程连接
  2. 容器化部署实践之Django应用部署(二)
  3. j2ee与mysql乱码过滤_mysql 在 j2ee中配置的乱码问题处理
  4. Python3之deepcopy在print调试中的使用技巧
  5. IP地址配置冲突导致路由振荡怎么办
  6. struct和typedef struct的区别(转)
  7. bzoj 1670 [Usaco2006 Oct]Building the Moat护城河的挖掘——凸包
  8. Java中的关键字this_super
  9. 查找文件夹下所有文件名字_我的电脑如何快速查找文件,分分钟钟找到你想要的文件!...
  10. java matcher group_JAVA正则表达式matcher.find()和 matcher.matches()的区别
  11. 腾讯音乐2019Q2财报:在线音乐付费用户达到创纪录的3100万
  12. 企业会计准则2020版pdf_2020年下半年CATTI三级笔译中译英真题+参考答案+原文件汉英对照PDF版...
  13. Android应用框架之Activity
  14. Windows之IOCP
  15. html中半透明效果,CSS半透明效果的属性和场景
  16. 纯净网站导航纯html无后台,仿360网址导航源码纯html页面无后台易操作修改无加密有留言后台...
  17. html5 canvas 涂鸦画板
  18. 3dmax入门学习丨3dmax如何做人物建模
  19. Wincc报表案例_设备运行报表
  20. 解决IE下input事件初始化自动执行的问题

热门文章

  1. maxscale mysql5.7_Maxscale实现Mysql读写分离
  2. libcurl 发送邮件_libcurl smtp发送邮件附件大小限制问题
  3. python如何避免访问对象不存在的属性_Python3基础 setattr 设置对象的属性值,如果属性不存在就创建一个...
  4. python3.7.4安装教程win7_Window10下python3.7 安装与卸载教程图解
  5. 鸿蒙推送荣耀,华为鸿蒙首批推送机型8款,荣耀“避嫌”,不在首批名单
  6. viper4android最新,ViPER4Android FX音效驱动下载-ViPER4Android音效驱动 v2.4.0.1 正式版_手机乐园...
  7. Java 多线程详解(一)------概念的引入
  8. R语言之随机数与抽样模拟篇
  9. android调用web接口,Android调用WebService系列之请求调用
  10. 抓取 虾米_Apple Music 新玩法——Workflow获取虾米评论以及导入虾米精选集