【SpringBoot_ANNOTATIONS】 生命周期 03 @PostConstruct @PreDestroy
生命周期 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
原文连接
简介
JSR 250(Java Specification Requests
),Java注解规范,定义了一系列基于Java EE和Java SE通用注解。它避免了不同框架或组件间重复(或冗余)的注解。JSR 250正式发布于2006年5月11日。随着申明式注解配置被越来越多地应用在Java框架(比如Spring),JSR 250可能在未来会持续增长,所以在使用诸如Spring之类的框架时,尽量使用JSR 250中定义的注解,避免和特定框架紧耦合。注解列表
注解 作用 @Generated 标记该资源是自动生成的 @Resource 定义了对某个资源的引用 @Resources 容器针对多资源的注解 @PostConstruct 标记在方法上用于依赖注入的初始化动作 @PreDestroy 标记在方法上用于该对象实例从容器销毁时的前置操作 @Priority 定义了该类执行的优先级 如拦截器的优先级 @RunAs 定义了应用在Java EE容器运行时的角色 @RolesAllowed 定义了什么安全角色被允许执行方法 @PermitAll 标记在类或方法上允许所有角色执行(所有)方法 @DenyAll 标记在方法上不允许所有角色调用 @DeclareRoles 用于定义系统的安全角色 @DataSourceDefinition 定义一个数据源,并通过JNDI注册到容器 @ManagedBean 定义一个被容器管理的对象
【SpringBoot_ANNOTATIONS】 生命周期 03 @PostConstruct @PreDestroy相关推荐
- spring17:Bean的生命始末标签@PostConstruct,@PreDestroy和改变作用范围的@Scope标签
Bean的生命始末标签@PostConstruct,@PreDestroy package com.atChina.Test8;import javax.annotation.PostConstruc ...
- vue- Vue-Cli脚手架工具安装 -创建项目-页面开发流程-组件生命周期-03
目录 本博客环境 Vue-Cli 项目环境搭建 与 python 基础环境对比 环境搭建 创建启动 vue 项目 命令创建项目(步骤小多) 启动 vue 项目(命令行方式) 启动 vue 项目(pyc ...
- k8s教程(pod篇)-生命周期、重启策略及健康检查
文章目录 01 引言 02 pod生命周期 03 pod重启策略 04 pod健康检查和服务可用性检查 4.1 方式一:ExecAction 4.2 方式二:TCPSocketAction 4.3 方 ...
- Spring生命周期注解之@PostConstruct,@PreDestroy
目录 1. 注解说明 2. 调用过程 3. 调用分析 1. 注解说明 @PostConstruct,@PreDestroy是Java规范JSR-250引入的注解,定义了对象的创建和销毁工作,同一期规范 ...
- 03 为什么 React 16 要更改组件的生命周期?(下)
通过对上一个课时的学习,你已经对 React 15 的生命周期有了系统的掌握和理解.本课时,我将在此基础上,对 React 16 以来的生命周期进行剖析.在理解"是什么"的基础上, ...
- 《Java 高并发》03 线程的生命周期
相关概念 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程. 一个进程是一个独立的运行环境,它可以被看作一个程序或者一个应用.而线程是在进程中执行的一个 ...
- Spring框架学习day_02:组件扫描 / 注解内部读解 / 组件扫描中配置作用域和生命周期 / 解耦 / 自动装配(两种方式) / 读取文件
1. 组件扫描 首先,必须让Spring扫描组件所在的包,并且,组件类的声明之前必须添加@Component注解! 其实,除了@Component注解以外,还可以使用以下注解实现同样的效果: @Con ...
- Bean的生命周期——init-method和destroy-method - 通过让Bean实现InitializingBean,DisposableBean--BeanPostProcessor
* bean的生命周期: * bean创建---初始化----销毁的过程 * 容器管理bean的生命周期: * 我们可以自定义初始化和销毁方法:容器在bean进行到当前生命周期的时候来调用我们自定义的 ...
- Spring-基于注解的配置[03Bean作用范围和生命周期方法]
Bean的作用范围 实例 Bean的生命周期方法 实例 Bean的作用范围 通过注解配置的Bean和通过<bean>配置的Bean一样,默认的作用范围都是singleton. Spring ...
- Spring 中 Bean 的生命周期
本文作者: 伯乐在线 - yemengying 智商捉鸡?,实在没办法一下子理解Spring IoC和AOP的实现原理,看的闹心也不太懂,所以...决定拆成小的不能在小的一个个问题,一点点啃.今天先来 ...
最新文章
- CDH大数据集群安全风险汇总
- 虚拟机服务器503解决,(图文)解决重启VCSA 6.0提示:503 Service Unavailable错误
- HDU-1162-Eddy's picture
- 11种你需要了解的物联网(IoT)协议
- windows服务又界面吗_详解远程桌面协议, Linux 和 Windows 间的远程桌面互相访问(RDP、VNC协议)...
- 改善Java应用程序性能的快速技巧
- C#设计学生成绩排序
- const int *p说明不能修改_随时随地学习C语言之6—const修饰的变量真的不能修改吗?...
- ucenter php7.0版,UCenter1.5.0/UCenter Home1.5/Discuz! 7.0
- DVWA-CSRF-low级别
- 【转】学习理论,注重细节
- bzoj 3242: [Noi2013]快餐店
- Java网络编程(TCP协议-练习-上传文本文件)
- echarts-市地图
- 2020年最新世界地图_2020世界地图下载
- Elasticsearch LBS 的简单应用
- kaggle TalkingData用户性别数据预测性别入门笔记
- 微信小程序赋能会员管理和会员营销互动
- keil5安装包下载
- Windows下如何将文件打包压缩成 .tar.gz格式
热门文章
- 田汉卿 | 量化基金怎么投,才能源源不断赚钱?
- 机器学习笔记(二):矩阵、环境搭建、NumPy | 凌云时刻
- 阿里张勇《人民日报》刊发署名文章:抓住数字新基建的机遇
- 阿里云郑晓:浅谈GPU虚拟化技术(第四章)
- 【通信】基于matlab Alamouti空频编码【含Matlab源码 801期】
- 【路径规划】基于matlab GUI人工势场算法机器人避障路径规划(手动设障)【含Matlab源码 617期】
- 【车间调度】基于matlab NSGA-2算法求解多目标车间调度问题【含Matlab源码 071期】
- mysql员工与部门代码,springMVC入门实例(员工系统-Mysql)代码简单易懂
- PyTorch1.2安装(Anaconda3 + Python3.6 + cpu版本)
- 动态规划: 数字三角形