bean实例与init方法

本文源于开发中对init方法调用时机的误解,指出在Java中构造方法后不会自动调用init方法,而是Spring的@Bean注解提供了此功能。通过设置initMethod属性,可以在bean实例化后调用指定的初始化方法。文中举例说明了@Bean的使用,并澄清了@Component等注解与@Bean的区别,强调它们不具备自动调用init功能。
摘要由CSDN通过智能技术生成

最近在开发的时候,由于对init方法的调用时机的误解,导致实例初始化时retry字段未未赋值,为0,直接造成线上某接口在调用其他服务失败时重试机制失效而导致接口超时,还好没有酿成大祸。本人也是吓出一身冷汗。所以此次些这边文章的目的也是为了归纳总结开发中的知识盲点,分享给大家,希望小伙伴们能引以为鉴。

我的误区是实例初始化后会自动调用init方法,但是在java中并没有规定在调用了构造方法后会自动调用init方法,是我没有记忆牢固,把知识混淆了。其实这个功能是有spring框架的@Bean注解提供的,在使用@Bean注解时配置initMethod属性为init即可(我使用了@Bean,但是没有初始化initMethod值,悲剧-_-!),那么下面我用一个例子来演示下该情况。

PS:@Bean可以用在方法上,但不能用在类上

@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Bean {
  @AliasFor("name")
  String[] value() default {};

  @AliasFor("value")
  String[] name() default {};

  Autowire autowire() default Autowire.NO;

  String initMethod
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值