学习笔记086——@PostConstruct注解和InitializingBean接口的使用

文章目录

  • 1、@PostConstruct注解
    • 1.1 介绍
    • 1.2 用法
    • 1.3 场景
  • 2、InitializingBean接口
    • 2.1 介绍
    • 2.2 用法

1、@PostConstruct注解

1.1 介绍

@PostConstruct 是 Java EE/Jakarta EE 中的一个注解,用于标记一个方法在依赖注入完成后执行初始化操作。它通常与 Spring 框架一起使用,适用于需要在对象初始化时执行特定逻辑的场景。

  1. 初始化方法:标注的方法会在以下两个操作完成后被调用:
  • 依赖注入(DI)完成:Spring 容器完成对 Bean 的属性注入(如 @Autowired、@Value 等)。
  • Bean 实例化:Bean 对象被创建后。
  1. 执行时机: 是 Bean 生命周期中的一个关键步骤,通常在 @Autowired 或其他注入方式完成后执行,但早于 @PreDestroy 注解的销毁方法。

1.2 用法

  • 无参数且无返回值:被标注的方法必须是 void 类型且无参数。

    // 正确
    @PostConstruct
    public void init() { ... } 
    
  • 不抛出受检异常:方法不能声明抛出受检异常(checked exception),否则会抛出 BeanCreationException

    // 以下方法是错误的!
    @PostConstruct
    public void init() throws IOException { ... }
    
  • 实例方法:只能标注在实例方法上,不能用于静态方法或字段。

  • 唯一性:一个 Bean 中只能有一个 @PostConstruct 方法,否则会引发冲突。

public class MyService {@Autowiredprivate DemoRepository demoRepository;@PostConstructpublic void init() {// 在依赖注入完成后执行的初始化逻辑System.out.println("DemoRepository is initialized: " + demoRepository);// 可在此处进行数据库连接或其他初始化操作}
}

1.3 场景

  • 资源初始化:例如建立数据库连接、初始化缓存、加载配置等。
  • 依赖验证:检查注入的依赖是否合法。
  • 状态初始化:设置 Bean 的初始状态。

2、InitializingBean接口

2.1 介绍

InitializingBean 是 Spring 中的一个接口,用在 Bean 初始化后执行自定义逻辑。它只提供了一个 afterPropertiesSet() 方法。

在这里插入图片描述

该方法在以下时机被 Spring 容器自动调用:

  1. 属性注入完成后(即所有通过 setter 方法或构造函数注入的属性已设置完毕)。
  2. Bean 初始化阶段的最后一步(在调用 @PostConstruct 注解的方法之后,如果同时存在的话)。

2.2 用法

@Service
@Slf4j
public class PlatformCommunicationServiceImpl implements InitializingBean {@Overridepublic void afterPropertiesSet() {syncPlatformDataInfo();log.info("执行了afterPropertiesSet方法");}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/web/83452.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

考研系列—408真题操作系统篇(2015-2019)

目录 # 2015年 1.死锁处理 (1)预防死锁 (2)避免死锁 (3)死锁检测和解除 2.请求分页系统的页面置换策略、页面置换策略 3.页、页框、页表,基本分页系统 # 2016年 1.异常、中断 2.页置换算法 3.进程的互斥操作 4.SPOOLing技术(从软件方面实现设备共享) 5.一定要牢记…

argocd部署cli工具并添加k8s集群

先决条件: 1.已经有k8s集群,(网上一万种部署方式,这里我使用的是kubekey部署的),也埋了个坑,后面说明. 2.已经部署好argocd,并验证web已经可以访问.参见 k8s部署argocd-CSDN博客 部署客户端工具, 这里我是从web页面上直接下载的对应版本的cli工具. 打开已经部署好的argoc…

打卡day52

简单cnn 借助调参指南进一步提高精度 基础CNN模型代码 import tensorflow as tf from tensorflow.keras import layers, models from tensorflow.keras.datasets import cifar10 from tensorflow.keras.utils import to_categorical# 加载数据 (train_images, train_labels),…

OpenGL ES绘制3D图形以及设置视口

文章目录 关于 glDrawElements基本概念使用场景mode 绘制模式type 索引数据类型indices 索引缓冲区工作原理绘制正方体实例 视口透视投影(Perspective Projection)正交投影(Orthographic Projection)正交投影和透视投影对比 关于 …

【SAS求解多元回归方程】REG多元回归分析-多元一次回归

多元一次回归是一种统计方法,用于分析多个自变量(解释变量)与一个因变量(响应变量)之间的线性关系。 目录 【示例】 基本语法 SAS代码 参数估计 方差分析 回归统计量 y的拟合诊断 y的回归变量值 【示例】 设Y…

卡通幼儿园教育通用可爱PPT模版分享

幼儿园教育通用PPT模版,教育教学PPT模版,卡通教育PPT模版,可爱卡通教学课件PPT模版,小清新动物卡通通用PPT模版,教学说课通用PPT模版,开学季PPT模版,国学颂歌PPT模版,可爱简约风PPT模…

力扣HOT100之技巧:75. 颜色分类

这道题实际上就是让我们不用sort()函数来实现对原数组的排序,这里我直接使用快速排序对原数组进行排序了,也是复习一下基于快慢指针的快速排序写法。面试手撕快排的思路参考这个视频。 用时击败100%,还行。下面直接贴代码。 class Solution …

离线部署openstack 2024.1 keystone

控制节点身份服务 离线下载 apt-get install --download-only keystone python3-openstackclient apache2 libapache2-mod-wsgi-py3mkdir /controller/keystone mv /var/cache/apt/archives/*.deb /controller/keystone/ dpkg -i /controller/keystone/*.deb在一个控制节点操…

帆软 BI 从入门到实战全攻略(一):安装激活与添加数据

一、帆软 BI 产品概述​ 在当今大数据时代,数据分析与可视化成为企业洞察业务、驱动决策的关键利器。帆软软件有限公司作为中国专业的大数据 BI 和分析平台提供商,自 2006 年成立以来,凭借其在商业智能和数据分析领域的深耕细作,…

网络协议通俗易懂详解指南

目录 1. 什么是网络协议? 1.1 协议的本质 1.2 为什么需要协议? 1.3 协议分层的概念 2. TCP协议详解 - 可靠的信使 📦 2.1 TCP是什么? 2.2 TCP的核心特性 🔗 面向连接 🛡️ 可靠传输 📊 流量控制 2.3 TCP三次握手 - 建立连接 2.4 TCP四次挥手 - 断开连接…

量子加速器切入 AI 底层架构!能源焦虑时代,ORCA 正在改写数据中心的计算逻辑

内容来源:量子前哨(ID:Qforepost) 文丨浪味仙 排版丨浪味仙 行业动向:2000字丨5分钟阅读 人工智能的飞速发展,令计算需求呈现爆炸式增长,也催生出专为 AI 设计的新型计算基础设施形态——AI…

< 买了个麻烦 (二) 618 京东云--轻量服务器 > “可以为您申请全额退订呢。“ 工单记录:可以“全额退款“

事情进展是这样的: 海外接听 一分钟 1-2 元,具体多少要问联通。 这几天接电话,有点儿心烦,看见来自 010-86310548 以为是 ICP 备案,结果接起来全是 VPS (轻量应用服务器)这个工单,就…

接口限频算法:漏桶算法、令牌桶算法、滑动窗口算法

文章目录 限频三大算法对比与选型建议一、漏桶算法(Leaky Bucket Algorithm)1.核心原理2.实现3.为什么要限制漏桶容量4.优缺点分析 二、令牌桶算法(Token Bucket Algorithm)1.核心原理2.实现(1)单机实现&am…

HTML5 盒子模型

1. 盒子模型的概念 2. 边框(border) 边框颜色(border-color) 边框粗细(border-width) 边框样式(border-style) border简写(border:) 3. 外边距&am…

【Linux】Linux高级I/O

参考博客:https://blog.csdn.net/sjsjnsjnn/article/details/128345976 一、五种IO模型 阻塞式I/O非阻塞式I/OI/O复用(多路转接)信号驱动式I/O异步I/O I/O我们并不陌生,简单的说就是输入输出;对于一个输入操作通常包…

关于界面存在AB测试后UI刷新空白的问题

问题描述: 在同一页面存在AB面,A和B同时都有一个rv,然后A面的rv填充不了数据,B面的可以。 问题解决: header_task布局里的include_new_gift_sign里有一个和外层一样id的recyclerview include的标签的作用是。在infl…

Go 协程(Goroutine)入门与基础使用

一、什么是协程(Goroutine)? 简单来说,协程是由 Go 语言运行时管理的轻量级线程。相比系统线程,它的调度开销极小,内存占用非常少(默认只需 2KB 栈空间)。 你可以在一个程序中轻松…

matlab 各种智能优化算法

1. 优化算法相关 蚁群优化算法(ACO) 蚁群优化算法是一种模拟蚂蚁觅食行为的优化技术。以下是一个简化版的ACO用于解决旅行商问题(TSP)的MATLAB代码: function [bestRoute, minDist] acoTsp(distMatrix, numAnts, n…

Hilt -> Android 专属依赖注入(DI)框架

Hilt 是 Google 基于 Dagger 封装的 Android 专属依赖注入(DI)框架,显著简化了依赖管理流程,提升代码可维护性和可测试性。以下是核心要点及使用指南: dagger2: Dagger 2 原理和使用-CSDN博客 Hilt vs Dagger2&…

AISHELL-5 全球首套智能驾舱中文语音交互数据集开源

随着汽车成为人们日常生活中不可或缺的一部分,而驾驶舱中传统的触摸交互方式容易分散驾驶员的注意力,存在安全风险,因此,车内基于语音的交互方式得到重视。与通常家庭或会议场景中的语音识别系统不同,驾驶场景中的系统…