@PostConstruct ,InitializingBean接口,init-method属性 三者的概念

在Spring框架中,在bean被实例化后,有三种方式可以用来执行Bean的初始化逻辑:@PostConstruct注解、实现InitializingBean接口以及使用init-method属性。

@PostConstruct

  • 来源与适用性@PostConstruct是Java EE规范的一部分,但在Spring中也被广泛支持。它可以应用于任何类的方法上,不需要实现特定接口。
  • 使用方式:只需在希望在Bean初始化完成后执行的方法上添加此注解即可。
  • 执行时机:在依赖注入完成后立即执行,但在Bean完全初始化之前(即,Bean可以使用其依赖,但尚未对外暴露)。
  • 灵活性:提供了注解式的简洁语法,易于理解和使用。

InitializingBean接口

  • 来源与适用性:这是Spring框架特有的接口,包含一个方法afterPropertiesSet()
  • 使用方式:需要让Bean类实现InitializingBean接口,并重写afterPropertiesSet()方法来定义初始化逻辑。
  • 执行时机:与@PostConstruct类似,也是在依赖注入完成后,但在Bean完全初始化之前执行。
  • 灵活性:相比注解,这种方式稍微繁琐,需要实现接口,但提供了更多控制权,特别是在不希望依赖Java EE规范的情况下。

init-method属性

  • 来源与适用性:这是Spring框架提供的XML配置方式或@Bean注解的属性,允许直接指定Bean的一个初始化方法。
  • 使用方式:在XML配置中通过init-method="methodName"属性指定,或在使用Java配置时通过@Bean(initMethod = "methodName")指定。
  • 执行时机:同样在依赖注入完成后执行,与前两者时机一致。
  • 灵活性:提供了非侵入式的初始化方法定义方式,特别适合不想在业务逻辑代码中引入特定框架注解或接口的情况。

三者怎么选择?

@PostConstruct更通用,适用于遵循Java EE规范的环境,且语法简洁。现代Spring应用倾向于使用@PostConstruct,因为它更加简洁且不引入额外的耦合。

InitializingBean是Spring特有的,适合不希望使用注解或XML配置的场景。

init-method提供了不改变类结构的配置方式,灵活性较高。

三者的执行顺序

1.@PostConstruct

2.InitializingBean.afterPropertiesSet() 

3.init-method

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值