@PostConstruct、@Autowired与构造函数的执行顺序详解

 更新时间:2025年08月05日 08:46:35   作者:懒虫虫~  
这篇文章主要介绍了@PostConstruct、@Autowired与构造函数的执行顺序,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

一、@PostConstruct介绍

Java提供的注解,被用来修饰方法,被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。

PostConstruct在构造函数之后执行,init()方法之前执行。

(1) 结论:

调用的顺序为: 构造函数 > @Autowired > @PostConstruct

(2) 作用:

@PostConstruct注解的方法在项目启动的时候执行这个方法,也可以理解为在spring容器启动的时候执行,可作为一些数据的常规化加载,比如读取数据字典之类、目录树缓存

二、Spring框架中在bean初始化和销毁时候执行实现方式

Spring框架中在bean初始化和销毁时候执行某个方法的三种实现方式。

(1)Spring框架中通过注解@PostConastruct 和 @PreDestroy来实现Bean初始化执行和销毁时候执行方法;

(2)Spring框架中通过实现接口InitializingBean ,DisposableBean来实现Bean初始化执行和销毁时候执行方法;

(3)Spring框架中通过xml配置文件中bean的init-method=“” destroy-method=""来实现Bean初始化执行和销毁时候执行方法;

  • Spring Bean执行顺序:

三、项目验证

1.MyServiceImpl

package com.huahua.myIdea.service.serviceImpl;

import com.huahua.myIdea.service.MyService;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;

@Service
public class MyServiceImpl implements MyService, InitializingBean {

    @Override
    public int addTotal(int x, int y) {
        return 0;
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("开始执行 afterPropertiesSet 方法: MyServiceImpl");
    }

    @PostConstruct
    public void postConstructMethod() {
        System.out.println("开始执行 PostConstruct 方法: MyServiceImpl");
    }

    @Autowired
    private void testAutowired(){
        System.out.println("开始执行 testAutowired 方法: MyServiceImpl");
    }

    MyServiceImpl(){
        System.out.println("开始执行 构造函数MyServiceImpl : MyServiceImpl");
    }
}

2.测试结果

3.项目源码

项目结构及代码下载,欢迎star~~

MyIdea

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。 

相关文章

  • Spring Boot项目获取resources目录下文件并返回给前端的方案

    Spring Boot项目获取resources目录下文件并返回给前端的方案

    我们在项目中经常碰到需要读取固定文件的场景,如模板文件,一般做法是将文件放在resources目录下,程序通过多种方式可以顺利读取文件,这篇文章主要给大家介绍了关于Spring Boot项目获取resources目录下文件并返回给前端的相关资料,需要的朋友可以参考下
    2024-07-07
  • Java中的拷贝数组CopyOnWriteArrayList详解

    Java中的拷贝数组CopyOnWriteArrayList详解

    这篇文章主要介绍了Java中的拷贝数组CopyOnWriteArrayList详解,ArrayList和LinkedList都不是线程安全的,如果需要线程安全的List,可以使用synchronizedList来生成一个同步list,但是这个同步list的方法都是通过synchronized修饰来保证同步的,需要的朋友可以参考下
    2023-12-12
  • Spring Cloud中配置客户端示例详解

    Spring Cloud中配置客户端示例详解

    这篇文章主要介绍了Spring Cloud中配置客户端的相关知识,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • mybatis-plus条件构造器的操作代码

    mybatis-plus条件构造器的操作代码

    mybatis-plus提供了AbstractWrapper抽象类,提供了很多sql语法支持的方法,比如模糊查询,比较,区间,分组查询,排序,判断空,子查询等等,方便我们用面向对象的方式去实现sql语句,本文重点给大家介绍mybatis-plus条件构造器的操作代码,感兴趣的朋友一起看看吧
    2022-03-03
  • SpringCloud Nacos服务分级存储模型详解

    SpringCloud Nacos服务分级存储模型详解

    Nacos服务分级存储模型是Nacos存储服务注册信息和配置信息的核心模型之一,本文将对 Nacos 服务分级存储模型进行深入解析,感兴趣的朋友一起看看吧
    2024-02-02
  • Java新手环境搭建 Tomcat安装配置教程

    Java新手环境搭建 Tomcat安装配置教程

    这篇文章主要为大家详细介绍了Java新手环境搭建的相关资料,Tomcat安装配置教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • java开发ShardingSphere的路由引擎类型示例详解

    java开发ShardingSphere的路由引擎类型示例详解

    这篇文章主要为大家介绍了java开发ShardingSphere的路由引擎类型示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • sms4j 2.0 全新来袭功能的调整及maven变化详解

    sms4j 2.0 全新来袭功能的调整及maven变化详解

    这篇文章主要介绍了sms4j 2.0 全新来袭功能的调整及maven变化详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • springboot vue测试平台开发调通前后端环境实现登录

    springboot vue测试平台开发调通前后端环境实现登录

    这篇文章主要介绍了springboot vue测试平台开发调通前后端环境实现登录详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • Spring使用@Autowired注解实现自动装配方式

    Spring使用@Autowired注解实现自动装配方式

    这篇文章主要介绍了Spring使用@Autowired注解实现自动装配方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09

最新评论