Open vstars opened 2 years ago
经过试验,发现在开发时依赖 org.springframework.boot:spring-boot-devtools 时,自己编写代码的ClassLoader是RestartClassLoader,但SwitchManager的ClassLoader是AppClassLoader,由于ClassLoader不一样,会导致功能开关修改后无法生效。
org.springframework.boot:spring-boot-devtools
RestartClassLoader
AppClassLoader
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency>
打印ClassLoader信息:
log.info(CommonTypeSwitch.class.getClassLoader().toString()); log.info(SwitchManager.class.getClassLoader().toString());
输出:
2021-11-26 16:49:41.813 INFO 50082 --- [nio-8080-exec-8] c.s.p.a.a.c.CommonTypeSwitchController : org.springframework.boot.devtools.restart.classloader.RestartClassLoader@64edd270 2021-11-26 16:49:41.818 INFO 50082 --- [nio-8080-exec-8] c.s.p.a.a.c.CommonTypeSwitchController : sun.misc.Launcher$AppClassLoader@18b4aac2
建议在本工程文档或阿里云AHAS功能开关的文档中补充这种情况的说明。
感谢反馈,社区一起来看一下这个 case
经过试验,发现在开发时依赖
org.springframework.boot:spring-boot-devtools
时,自己编写代码的ClassLoader是RestartClassLoader
,但SwitchManager的ClassLoader是AppClassLoader
,由于ClassLoader不一样,会导致功能开关修改后无法生效。打印ClassLoader信息:
输出:
建议在本工程文档或阿里云AHAS功能开关的文档中补充这种情况的说明。