Spring 实现InitializingBean接口使用场景

新手上路,请多包涵

为了给代码中的两个参数赋值,使用了如下的两种方式,请问有何区别,实现InitializingBean接口这种方式的优势在哪?

@Component
public class TestService implements InitializingBean {

    private String param1 = null;
    private String param2 = null;

    {
        param2 = "world";
        System.out.println("赋值param2,param2=" + param2);
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        param1 = "hello";
        System.out.println("赋值param1,param1=" + param1);
    }

}
阅读 4.8k
1 个回答

执行的时间不一样

  • 构造块(初始化块?)会被整合进构造方法,对象new出来就执行了,和容器无关
  • afterPropertiesSet是在容器把依赖都设置好之后调用的,这时对象的字段都有了容器设置进来的值,调用这个方法可以执行进一步的初始化,参数校验之类的逻辑
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题