美文网首页Spring技巧
SpringBoot bean初始化时, 如何自动调用某方法

SpringBoot bean初始化时, 如何自动调用某方法

作者: 饱饱想要的灵感 | 来源:发表于2023-12-26 09:30 被阅读0次

1. 使用 @PostConstruct 注解

这是 JSR-250 提供的注解,可以被用来修饰一个非静态的 void() 方法。当 Spring 创建 Bean 后,就会调用带有 @PostConstruct 注解的方法。

import javax.annotation.PostConstruct;
//...

public class MyBean {
    //...

    @PostConstruct
    public void init() {
        // 初始化代码
    }
}

2. 实现 InitializingBean 接口

如果你的 Bean 需要在属性设置后进行一些初始化,可以让它实现 InitializingBean 接口,然后重写 afterPropertiesSet 方法。

import org.springframework.beans.factory.InitializingBean;
//...

public class MyBean implements InitializingBean {
    //...

    @Override
    public void afterPropertiesSet() throws Exception {
        // 初始化代码
    }
}

3. 使用 @Bean 注解的 initMethod 属性

在 Spring Boot 中,你也可以在配置类中使用 @Bean 注解来声明一个 Bean,并使用 initMethod 属性来指定初始化方法。

@Configuration
public class MyConfiguration {
    @Bean(initMethod = "init")
    public MyBean myBean() {
        return new MyBean();
    }
}

MyBean 类中,你需要有一个名为 init 的方法:

public class MyBean {
    //...

    public void init() {
        // 初始化代码
    }
}

4. 将 @Autowired 写在无参方法上

没想到吧,@Autowired还可以写在无参数方法上。@Autowired 注解在 Spring 框架中主要用于依赖注入。但如果你将 @Autowired 写在无参方法上,那么在 Spring 初始化你的类并创建对象的时候,它将自动调用这个方法。

在无参方法上使用@Autowired可以用来初始化一些业务逻辑,而这些业务逻辑需要用到已经被Spring管理的bean。

但是这种用法Spring并不推荐。因为@Autowired注解主要用于将bean自动装配到注解所标记的字段、方法或构造函数中。通常是在有参数的构造函数,或者setter方法上使用@Autowired来实现自动装配。

相关文章

网友评论

    本文标题:SpringBoot bean初始化时, 如何自动调用某方法

    本文链接:https://www.haomeiwen.com/subject/bbckndtx.html