Spring初始化加载InitializingBean()方法

1、spring初始化bean有两种方式
    1)实现InitializingBean接口,继而实现afterPropertiesSet的方法 ;
    2)利用类反射原理,配置加载文件,使用init-method标签直接注入bean。

2、相同点:

    实现注入bean的初始化。

3、不同点:

    实现的方式不一致。

    接口比配置效率高,但是配置消除了对spring的依赖。而实现InitializingBean接口依然采用对spring的依赖。

4、InitializingBean接口定义的源码如下所示:

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package org.springframework.beans.factory;

public interface InitializingBean {
    void afterPropertiesSet() throws Exception;
}

    该方法在实现之后,会在程序加载完成之后执行。

5、由于代码在项目启动的时候会执行afterPropertiesSet()方法,如果方法中包含修改字段的信息,那么多次启动就会造成多次修改字段的内容。该方法常用的场景是数据库链接中使用。如果多次链接会造成一定的资源浪费。

    除了修改字段类型外当然也可以做别的事,如:检查某表是否存在 存在的话里面的某值是否存在 不存在则添加。

6、这个方法将在所有的属性被初始化后调用。但是会在init前调用。如果代码是延迟加载,则马上执行。所以可以在类上加上@Lazy(false)注解,其中添加的内容如下:

    import org.springframework.context.annotation.Lazy;

    @Lazy(false)

    这样spring容器初始化的时候afterPropertiesSet就会被调用,只需要实现InitializingBean接口就行。

发布了327 篇原创文章 · 获赞 133 · 访问量 63万+

猜你喜欢

转载自blog.csdn.net/qq_30507287/article/details/80994098