【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 ...");
    }

    /**
     * 对象创建并赋值之后调用
     */
    @PostConstruct
    public void init(){
        System.out.println("dog @PostConstruct ...");
    }

    /**
     * 容器移除对象前调用
     */
    @PreDestroy
    public void destroy(){
        System.out.println("dog @PreDestroy ...");
    }

}

配置新加

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

测试

    @Test
    void 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 ...");
    }

    /**
     * 对象创建并赋值之后调用
     */
    @PostConstruct
    public void postConstruct(){
        System.out.println("dog @PostConstruct ...");
    }

    /**
     * 容器移除对象前调用
     */
    @PreDestroy
    public 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定义一个被容器管理的对象
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值