java Spring是否触发静态初始化块?
我有一个类,它使用一个静态初始化块来做一些事情。我的理解是,这个块是在类被加载时执行的,这个类是通过从类中调用一些方法触发的
我的问题是,这种静态初始化是否可以从spring之类的框架触发,这些框架查看类以检查它们的注释等等
你可以在下面搜索框中键入要查询的问题!
我有一个类,它使用一个静态初始化块来做一些事情。我的理解是,这个块是在类被加载时执行的,这个类是通过从类中调用一些方法触发的
我的问题是,这种静态初始化是否可以从spring之类的框架触发,这些框架查看类以检查它们的注释等等
# 1 楼答案
类路径扫描不会触发静态初始化块,但创建组件会:
从JLS 8.7
请注意,它表示
initialized
,而不是loaded
当执行静态成员(方法或变量)或构造函数时,就会发生类初始化。 使用反射访问类的元数据时,这些类不一定要初始化,这取决于通过反射访问的类的内容
这在JLS 12.4.1中定义:
Spring只需扫描该包中的类,并在这些类中查找注释(如
@Component
)如果Spring找到这样的组件,它会创建初始化类的组件的实例
来自chrylis -cautiouslyoptimistic-的说明: