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
来实现自动装配。
网友评论