广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Spring框架中@PostConstruct注解详解
  • 773
分享到

Spring框架中@PostConstruct注解详解

2024-04-02 19:04:59 773人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录初始化方式一:@PostConstruct注解初始化方式二:实现InitializingBean接口补充:@PostConstruct注释规则总结初始化方式一:@PostCons

初始化方式一:@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(); 
}

补充:@PostConstruct注释规则

  1. 除了拦截器这个特殊情况以外,其他情况都不允许有参数,否则spring框架会报IllegalStateException;而且返回值要是void,但实际也可以有返回值,至少不会报错,只会忽略
  2. 方法随便你用什么权限来修饰,public、protected、private都可以,反正功能是由反射来实现
  3. 方法不可以是static的,但可以是final的

所以,综上所述,在spring项目中,在一个bean的初始化过程中,方法执行先后顺序为

Constructor > @Autowired > @PostConstruct

先执行完构造方法,再注入依赖,最后执行初始化操作,所以这个注解就避免了一些需要在构造方法里使用依赖组件的尴尬。

总结

到此这篇关于Spring框架中@PostConstruct注解详解的文章就介绍到这了,更多相关Spring @PostConstruct注解内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Spring框架中@PostConstruct注解详解

本文链接: https://www.lsjlt.com/news/164467.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Spring框架中@PostConstruct注解详解
    目录初始化方式一:@PostConstruct注解初始化方式二:实现InitializingBean接口补充:@PostConstruct注释规则总结初始化方式一:@PostCons...
    99+
    2022-11-13
  • Spring框架基于注解开发CRUD详解
    Spring框架基于注解开发CRUD,供大家参考,具体内容如下 1. Maven坐标 <!-- https://mvnrepository.com/artifact/org.s...
    99+
    2022-11-13
  • Java框架---Spring详解
    目录一 技术发展二 框架设计Spring Framework 6大模块三 Spring AOP详解AOP两种方式四 Spring Bean核心原理Bean的加载过程五 Spring ...
    99+
    2022-11-12
  • Spring Boot Rest常用框架注解详情简介
    目录开始Spring Boot Rest的先决条件在Spring Initializer创建Spring Boot项目Spring Boot注解@RestController@Req...
    99+
    2022-11-13
  • Spring Boot构建框架详解
    什么Spring Boot?Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。用我的话来理解,...
    99+
    2023-05-30
    spring boot 框架
  • Java Spring框架简介与Spring IOC详解
    目录Spring简介和配置1、Spring概述1.1 spring 是什么1.2 Spring发展历程1.3 Spring的优势 (理解)\1. 方便解耦,简化开发\2. AOP 编...
    99+
    2022-11-12
  • SpringBoot框架中的@Conditional注解示例详解
    目录1. @Conditional 注解2. Spring boot 扩展1) @ConditionalOnClass和@ConditionalOnMissingClass注解2) ...
    99+
    2022-11-13
  • Spring框架学习之AOP详解
    目录一、概念二、底层原理:动态代理2.1 有接口, JDK 动态代理2.2 无接口, CGLIB 动态代理三、术语四、操作4.1 Spring 框架一般都是基于 AspectJ 实现...
    99+
    2022-11-12
  • spring kafka框架中@KafkaListener注解怎么使用
    这篇文章主要介绍“spring kafka框架中@KafkaListener注解怎么使用”,在日常操作中,相信很多人在spring kafka框架中@KafkaListener注解怎么使用问题上存在疑惑,小编查阅了各式资...
    99+
    2023-07-05
  • Spring注解详解
    概述 注释配置相对于 XML 配置具有很多的优势:它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作。如使用 JPA 注释配置 ORM 映射时,我们就不需要指定 PO 的属性名、类型等信息,如果关系表字段和...
    99+
    2023-06-03
  • Spring框架学习常用注解汇总
    目录类注解方法或属性上注解参数注解类注解 @component 标注类,泛指各种组件,类不属于各种分类的时候,用它做标注。 @Service 标注类,声明该类为业务层组件,用于处理业...
    99+
    2022-11-12
  • Spring Boot 验证码框架 CAPTCHA详解
    CAPTCHA 查看 Github 仓库 | 查看 Gitee 仓库 简介 人机识别与验证码是后端开发中保护接口最常见的方式之一,而此类代码往往会与业务代码耦合带来项目可维护性变差。...
    99+
    2022-11-11
  • 详解批处理框架之Spring Batch
    目录一、Spring Batch的概念知识1.1、分层架构1.2、关键概念1.2.1、JobRepository1.2.2、任务启动器JobLauncher1.2.3、任务Job1....
    99+
    2022-11-12
  • 详解MyEclipse中搭建spring-boot+mybatis+freemarker框架
    在MyEclipse里创建一个maven项目。File>New>Maven Project:勾选图中红色部分,然后点击Next。填写下图中红色部分然后点击Finish。此时一个maven项目已经生成,目录结构如下:打开pom.x...
    99+
    2023-05-31
    myeclipse springboot mybatis
  • Java Spring框架的注解式开发你了解吗
    目录1. Spring框架的注解式开发1.1 开启注解扫描配置1.2 实例化相关注解1.3 控制对象的创建次数的注解1.4 注入相关的注解1.5 控制事务的相关注解总结1. Spri...
    99+
    2022-11-13
  • 详解Spring注解@Configuration
    目录@Configuration 注解的概述底层原理与 Spring IoC 容器的集成Bean 的定义和装配的实现条件化配置的实现配置类的加载和实例化过程总结Spring 提供了丰...
    99+
    2023-05-16
    Spring注解@Configuration介绍 Spring注解@Configuration Spring注解
  • spring框架cacheAnnotation缓存注释声明解析
    目录1.基于注释声明缓存1.1@EnableCaching1.2@Cacheable1.2.1默认key生成规则1.2.2声明自定义key 生成1.2.3默认的cache resol...
    99+
    2022-11-12
  • Spring Boot Rest常用框架注解有哪些
    本篇内容主要讲解“Spring Boot Rest常用框架注解有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring Boot Rest常用框架...
    99+
    2023-07-02
  • 如何对Spring框架注解进行配置
    本篇文章为大家展示了如何对Spring框架注解进行配置,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。前言Spring框架对Bean进行装配提供了很灵活的方式,下面归纳一下主要的方式:在XML中进行显...
    99+
    2023-05-31
    spring
  • Spring框架对于Bean的管理详解
    目录什么是Bean管理Bean管理操作的两种方式基于注解的方式实现Bean管理和注入属性(常用)1.什么是注解2.Spring针对Bean管理中创建对象提供的注解3.用注解的方式创建...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作