spring的bean初始化策略

如果当前没有使用 GraalVM 镜像环境,AbstractAutowireCapableBeanFactory 中指定 instantiationStrategy 的值为 CglibSubclassingInstantiationStrategy,即默认创建对象使用的是 cglib。

java 复制代码
/**
	 * Create a new AbstractAutowireCapableBeanFactory.
	 */
	public AbstractAutowireCapableBeanFactory() {
		super();
		ignoreDependencyInterface(BeanNameAware.class);
		ignoreDependencyInterface(BeanFactoryAware.class);
		ignoreDependencyInterface(BeanClassLoaderAware.class);
		if (NativeDetector.inNativeImage()) {
			this.instantiationStrategy = new SimpleInstantiationStrategy();
		}
		else {
			this.instantiationStrategy = new CglibSubclassingInstantiationStrategy();
		}
	}

GraalVM 原生镜像通过启动时设置参数指定 org.graalvm.nativeimage.imagecode,不指定默认为 false。

java 复制代码
public abstract class NativeDetector {

	// See https://github.com/oracle/graal/blob/master/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/ImageInfo.java
	private static final boolean imageCode = (System.getProperty("org.graalvm.nativeimage.imagecode") != null);

	/**
	 * Returns {@code true} if invoked in the context of image building or during image runtime, else {@code false}.
	 */
	public static boolean inNativeImage() {
		return imageCode;
	}
}
相关推荐
小bo波1 分钟前
形式化方法 × UML
java·软件工程·uml·面向对象·形式化方法·tla+
掘金者阿豪25 分钟前
终于!我的第二本书正式出版,吃透 Agentic AI 核心不踩坑
javascript·后端
就叫_这个吧26 分钟前
IDEA中Javaweb项目创建+servlet,实现简单的信息录入获取
java·servlet·intellij-idea·web
二月龙29 分钟前
Redis 缓存设计避坑指南:穿透、击穿、雪崩与一致性问题
后端
程序员Jelena29 分钟前
接口调用的代码实现:从入门到实战
java
掘金者阿豪32 分钟前
运营不会SQL怎么办?我把数据库变成了大家都会用的表格
后端
代码钢琴师33 分钟前
Throttle4j 快速上手教程
java
孟陬35 分钟前
国外技术周刊 #139:LLM 正在杀死程序员的「懒惰美德」
前端·人工智能·后端
七牛云行业应用43 分钟前
Codex CLI 和 Codex 桌面端完整教程:两种入口的功能对比与选择指南
前端·后端·github
wheninger1 小时前
DDD 聚合 × Agent 命令:那道拒绝 AI 的墙
后端