@PostConstruct注解详解

@PostConstruct注解详解初始化方式一 PostConstruc 注解假设类 UserControll 有个成员变量 UserService 被 Autowired 修饰 那么 UserService 的注入是在 UserControll 的构造方法之后执行的 如果想在 UserControll 对象生成时候完成某些初始化操作 而偏偏这些初始化操作又依赖于依赖注入的对象 那么就无法在构造函数中实现 ps spring 启动时初始化异常 例如 publicclassU

初始化方式一:@PostConstruct注解

        假设类UserController有个成员变量UserService@Autowired修饰,那么UserService的注入是在UserController的构造方法之后执行的。

        如果想在UserController对象生成时候完成某些初始化操作,而偏偏这些初始化操作又依赖于依赖注入的对象,那么就无法在构造函数中实现(ps:spring启动时初始化异常),例如:

public class UserController { @Autowired private UserService userService; public UserController() { // 调用userService的自定义初始化方法,此时userService为null,报错 userService.userServiceInit(); } }

        因此,可以使用@PostConstruct注解来完成初始化,@PostConstruct注解的方法将会在UserService注入完成后被自动调用。

public class UserController { @Autowired private UserService userService; public UserController() { } // 初始化方法 @PostConstruct public void init(){ userService.userServiceInit(); } }

  总结:类初始化调用顺序:

(1)构造方法Constructor

(2)@Autowired

(3)@PostConstruct

初始化方式二:实现InitializingBean接口

        除了采用注解完成初始化,也可以通过实现InitializingBean完成类的初始化

public class UserController implements InitializingBean { @Autowired private UserService userService; public UserController() { } // 初始化方法 @Override public void afterPropertiesSet() throws Exception { userService.userServiceInit(); } }

        比较常见的如SqlSessionFactoryBean,它就是通过实现InitializingBean完成初始化的。

@Override public void afterPropertiesSet() throws Exception { // buildSqlSessionFactory()是完成初始化的核心方法,必须在构造方法调用后执行 this.sqlSessionFactory = buildSqlSessionFactory(); }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/178410.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午5:22
下一篇 2026年3月26日 下午5:22


相关推荐

  • java executeupdate,Java线程安全中的executeUpdate方法[通俗易懂]

    java executeupdate,Java线程安全中的executeUpdate方法[通俗易懂]IhavemultiplethreadstryingtoupdateaMySQLdatabase?isexecuteUpdatemethodthread-safetouse?解决方案No,itisnotthread-safetouse.Infact,ifsomeotherthreadusesastatement,andthenanot…

    2022年10月20日
    6
  • dpu芯片_三星放弃自研架构

    dpu芯片_三星放弃自研架构近日,专注于智能计算领域的DPU芯片和解决方案公司中科驭数发布了其下一代DPU芯片计划,将基于自研的KPU(KernelProcessingUnit)芯片架构,围绕网络协议处理、数据库和大数据处理加速、存储运算、安全加密运算等核心功能,推出新一代DPU芯片,赋能金融科技、数据中心、混合云及边缘计算等高带宽、低延迟、数据密集型的计算场景。DPU,是DataProcessingUnit的简称,是面向数据中心的专用处理器。据中科驭数创始人兼CEO鄢贵海介绍,”DPU是最新发展起来的专用处理器的一个大类

    2025年9月27日
    4
  • 什么软件可以更换手机ip地址「建议收藏」

    什么软件可以更换手机ip地址「建议收藏」这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好!这是你第一次使用Markdown编辑器所展示的欢迎页。如果你想学习如何使用Mar

    2022年6月17日
    31
  • Mybatis的resultMap和resultType区别

    Mybatis的resultMap和resultType区别resultMap 和 resultType 区别 resultMap 和 resultType 的功能类似 都是返回对象信息 但是 resultMap 要更好用一些 因为 resultMap 可以自定义 需要进行配置 字段名和实体类名称可以不相同 因为 resultMap 都可以映射出来 而 resultType 就必须要求字段名和实体类名称相同 二者不能同时存在 resultMap 对外部 resultMap 的引用属性 id type 子元素 id result association collectionre

    2026年3月19日
    1
  • 手把手教如何搭建Linux环境(搭建云服务器) (Linux基础篇p1)

    手把手教如何搭建Linux环境(搭建云服务器) (Linux基础篇p1)目录敲黑板啦 Linux 企业应用现状 重要性 选择性看 搭建 Linux 环境 Linux 环境的搭建方式 购买云服务器 进入正题 第一步 第二步 第三步 第四步 第五步 第六步 以后咋找 敲黑板啦作者新创立了一个 非科班转码的社区 期待科班的铁汁们来一起正确地引导我们这些非科班的友友们 更期待非科班转码的铁汁们来融入我们的大家庭 一起创办一线社区哈 https bbs csdn net f

    2026年3月20日
    2
  • 详解Nacos和Eureka的区别「建议收藏」

    详解Nacos和Eureka的区别「建议收藏」1.Eureka是什么Eureka是SpringCloud微服务框架默认的也是推荐的服务注册中心,由Netflix公司与2012将其开源出来,Eureka基于REST服务开发,主要用于实现AWS云的中服务定位,以实现中间层服务器的负载均衡和故障转移,2018年7月份……………………………

    2022年8月21日
    15

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号