美文网首页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