栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

spring:当Java中有静态和非静态初始化程序时,为什么需要InitializingBean的afterPropertiesSet()?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

spring:当Java中有静态和非静态初始化程序时,为什么需要InitializingBean的afterPropertiesSet()?

鉴于以下课程

public class MyClass implements InitializingBean {    static { ... } // static initializer    { ... }  // non-static initializer    public void afterPropertiesSet() throws Exception { ... }}

静态 初始化代码块时,类是由类加载器加载时才执行。那时该类没有实例,您此时只能访问类级别(

static
)变量,而不能访问实例变量。

非静态 初始化块是在构造对象,但任何属性被注入之前时。非静态初始化程序块实际上已复制到构造函数。

Java编译器将初始化程序块复制到每个构造函数中。因此,该方法可用于在多个构造函数之间共享代码块。

另请参见静态初始化块和http://docs.oracle.com/javase/tutorial/java/javaOO/initial.html

afterPropertiesSet
@PostConstruct
创建类的实例后,标注的方法被调用,所有的属性已设置。例如,如果您想预加载一些可以在此方法中完成的数据,因为已经设置了所有依赖项。

如果仅具有强制性依赖关系,则最好使用构造函数注入,而不要在构造函数中使用

InitializingBean
@PostConstruct
放置初始化逻辑。仅当所有依赖项都通过构造函数注入时才有效,如果您通过set方法设置了可选的依赖项,则只能使用
@PostConstruct
InitializingBean



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/417135.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号