InitializingBean 是 Spring 框架中的一个接口,主要用于在 bean 的属性设置完成后执行自定义的初始化逻辑。实现此接口的类可以重写 afterPropertiesSet() 方法,该方法会在所有依赖属性被注入后被调用。
作用
-
自定义初始化逻辑:当 Spring 完成 bean 的依赖注入后,可以使用这个接口来执行某些初始化的操作,比如校验必需的属性是否被正确设置,或者执行一些启动时的配置。
-
简化代码:使用
InitializingBean可以避免在 XML 配置中使用<bean>标签中的init-method属性,使得 bean 的初始化逻辑更为集中和清晰。
使用场景
-
需要验证属性:如果一个 bean 在创建后需要确保某些属性已经被正确设置,可以实现
InitializingBean进行验证。 -
启动时资源加载:向数据库加载配置、读取文件或初始化特定的资源等,都可以放在
afterPropertiesSet()方法中进行。 -
设置默认值:在所有属性注入完成后,可以在此处设置一些基于已注入属性的计算出的默认值。
示例
import org.springframework.beans.factory.InitializingBean;
public class MyBean implements InitializingBean {
private String name;
public void setName(String name) {
this.name = name;
}
@Override
public void afterPropertiesSet() throws Exception {
if (name == null) {
throw new IllegalArgumentException("Name must not be null");
}
// 更多初始化逻辑
System.out.println("Initializing MyBean with name: " + name);
}
}
在这个示例中,MyBean 类实现了 InitializingBean 接口,并在 afterPropertiesSet() 方法中进行属性验证和初始化操作。