生命周期 03 @PostConstruct & @PreDestroy

使用JSR250
@PostConstruct:在bean创建完成并且属性赋值完成后执行此方法
@PreDestroy:在容器销毁bean之前通知进行清理工作

Dog.java

package com.example.annotations.bean;import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;/*** 测试* @PostConstruct* @PreDestroy*/
public class Dog {public Dog() {System.out.println("dog construct ...");}/*** 对象创建并赋值之后调用*/@PostConstructpublic void init(){System.out.println("dog @PostConstruct ...");}/*** 容器移除对象前调用*/@PreDestroypublic void destroy(){System.out.println("dog @PreDestroy ...");}}

配置新加

    @Bean(value = "dog4LifeCycle")public Dog dog(){return new Dog();}

测试

    @Testvoid lifeCycleTest(){//配置类测试AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfigOfLifeCycle.class);System.out.println("容器创建完毕");//关闭容器applicationContext.close();System.out.println("容器已关闭");}

结果

现添加之前的生命周期方法

package com.example.annotations.bean;import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;/*** 测试* @PostConstruct* @PreDestroy*/
public class Dog {public Dog() {System.out.println("dog construct ...");}/*** 做初始化方法* 初始化方法不可以有参数 但可以抛异常*/public void init() {System.out.println("dog init ...");}/*** 对象创建并赋值之后调用*/@PostConstructpublic void postConstruct(){System.out.println("dog @PostConstruct ...");}/*** 容器移除对象前调用*/@PreDestroypublic void preDestroy(){System.out.println("dog @PreDestroy ...");}/*** 做销毁方法* 销毁方法不可以有参数 但可以抛异常*/public void destroyMethod() {System.out.println("dog destroyMethod ...");}}

配置类:

    @Bean(value = "dog4LifeCycle",initMethod = "init",destroyMethod = "destroyMethod")public Dog dog(){return new Dog();}

测试结果

扩展 JSR250
原文连接

  1. 简介
    JSR 250(Java Specification Requests),Java注解规范,定义了一系列基于Java EE和Java SE通用注解。它避免了不同框架或组件间重复(或冗余)的注解。JSR 250正式发布于2006年5月11日。随着申明式注解配置被越来越多地应用在Java框架(比如Spring),JSR 250可能在未来会持续增长,所以在使用诸如Spring之类的框架时,尽量使用JSR 250中定义的注解,避免和特定框架紧耦合。

  2. 注解列表

    注解 作用
    @Generated 标记该资源是自动生成的
    @Resource 定义了对某个资源的引用
    @Resources 容器针对多资源的注解
    @PostConstruct 标记在方法上用于依赖注入的初始化动作
    @PreDestroy 标记在方法上用于该对象实例从容器销毁时的前置操作
    @Priority 定义了该类执行的优先级 如拦截器的优先级
    @RunAs 定义了应用在Java EE容器运行时的角色
    @RolesAllowed 定义了什么安全角色被允许执行方法
    @PermitAll 标记在类或方法上允许所有角色执行(所有)方法
    @DenyAll 标记在方法上不允许所有角色调用
    @DeclareRoles 用于定义系统的安全角色
    @DataSourceDefinition 定义一个数据源,并通过JNDI注册到容器
    @ManagedBean 定义一个被容器管理的对象

【SpringBoot_ANNOTATIONS】 生命周期 03 @PostConstruct @PreDestroy相关推荐

  1. spring17:Bean的生命始末标签@PostConstruct,@PreDestroy和改变作用范围的@Scope标签

    Bean的生命始末标签@PostConstruct,@PreDestroy package com.atChina.Test8;import javax.annotation.PostConstruc ...

  2. vue- Vue-Cli脚手架工具安装 -创建项目-页面开发流程-组件生命周期-03

    目录 本博客环境 Vue-Cli 项目环境搭建 与 python 基础环境对比 环境搭建 创建启动 vue 项目 命令创建项目(步骤小多) 启动 vue 项目(命令行方式) 启动 vue 项目(pyc ...

  3. k8s教程(pod篇)-生命周期、重启策略及健康检查

    文章目录 01 引言 02 pod生命周期 03 pod重启策略 04 pod健康检查和服务可用性检查 4.1 方式一:ExecAction 4.2 方式二:TCPSocketAction 4.3 方 ...

  4. Spring生命周期注解之@PostConstruct,@PreDestroy

    目录 1. 注解说明 2. 调用过程 3. 调用分析 1. 注解说明 @PostConstruct,@PreDestroy是Java规范JSR-250引入的注解,定义了对象的创建和销毁工作,同一期规范 ...

  5. 03 为什么 React 16 要更改组件的生命周期?(下)

    通过对上一个课时的学习,你已经对 React 15 的生命周期有了系统的掌握和理解.本课时,我将在此基础上,对 React 16 以来的生命周期进行剖析.在理解"是什么"的基础上, ...

  6. 《Java 高并发》03 线程的生命周期

    相关概念 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程. 一个进程是一个独立的运行环境,它可以被看作一个程序或者一个应用.而线程是在进程中执行的一个 ...

  7. Spring框架学习day_02:组件扫描 / 注解内部读解 / 组件扫描中配置作用域和生命周期 / 解耦 / 自动装配(两种方式) / 读取文件

    1. 组件扫描 首先,必须让Spring扫描组件所在的包,并且,组件类的声明之前必须添加@Component注解! 其实,除了@Component注解以外,还可以使用以下注解实现同样的效果: @Con ...

  8. Bean的生命周期——init-method和destroy-method - 通过让Bean实现InitializingBean,DisposableBean--BeanPostProcessor

    * bean的生命周期: * bean创建---初始化----销毁的过程 * 容器管理bean的生命周期: * 我们可以自定义初始化和销毁方法:容器在bean进行到当前生命周期的时候来调用我们自定义的 ...

  9. Spring-基于注解的配置[03Bean作用范围和生命周期方法]

    Bean的作用范围 实例 Bean的生命周期方法 实例 Bean的作用范围 通过注解配置的Bean和通过<bean>配置的Bean一样,默认的作用范围都是singleton. Spring ...

  10. Spring 中 Bean 的生命周期

    本文作者: 伯乐在线 - yemengying 智商捉鸡?,实在没办法一下子理解Spring IoC和AOP的实现原理,看的闹心也不太懂,所以...决定拆成小的不能在小的一个个问题,一点点啃.今天先来 ...

最新文章

  1. CDH大数据集群安全风险汇总
  2. 虚拟机服务器503解决,(图文)解决重启VCSA 6.0提示:503 Service Unavailable错误
  3. HDU-1162-Eddy's picture
  4. 11种你需要了解的物联网(IoT)协议
  5. windows服务又界面吗_详解远程桌面协议, Linux 和 Windows 间的远程桌面互相访问(RDP、VNC协议)...
  6. 改善Java应用程序性能的快速技巧
  7. C#设计学生成绩排序
  8. const int *p说明不能修改_随时随地学习C语言之6—const修饰的变量真的不能修改吗?...
  9. ucenter php7.0版,UCenter1.5.0/UCenter Home1.5/Discuz! 7.0
  10. DVWA-CSRF-low级别
  11. 【转】学习理论,注重细节
  12. bzoj 3242: [Noi2013]快餐店
  13. Java网络编程(TCP协议-练习-上传文本文件)
  14. echarts-市地图
  15. 2020年最新世界地图_2020世界地图下载
  16. Elasticsearch LBS 的简单应用
  17. kaggle TalkingData用户性别数据预测性别入门笔记
  18. 微信小程序赋能会员管理和会员营销互动
  19. keil5安装包下载
  20. Windows下如何将文件打包压缩成 .tar.gz格式

热门文章

  1. 田汉卿 | 量化基金怎么投,才能源源不断赚钱?
  2. 机器学习笔记(二):矩阵、环境搭建、NumPy | 凌云时刻
  3. 阿里张勇《人民日报》刊发署名文章:抓住数字新基建的机遇
  4. 阿里云郑晓:浅谈GPU虚拟化技术(第四章)
  5. 【通信】基于matlab Alamouti空频编码【含Matlab源码 801期】
  6. 【路径规划】基于matlab GUI人工势场算法机器人避障路径规划(手动设障)【含Matlab源码 617期】
  7. 【车间调度】基于matlab NSGA-2算法求解多目标车间调度问题【含Matlab源码 071期】
  8. mysql员工与部门代码,springMVC入门实例(员工系统-Mysql)代码简单易懂
  9. PyTorch1.2安装(Anaconda3 + Python3.6 + cpu版本)
  10. 动态规划: 数字三角形