alibaba / switch-config

switch-config
Apache License 2.0
26 stars 15 forks source link

ClassLoader不一样会导致功能开关修改后无法生效 #2

Open vstars opened 2 years ago

vstars commented 2 years ago

经过试验,发现在开发时依赖 org.springframework.boot:spring-boot-devtools 时,自己编写代码的ClassLoader是RestartClassLoader,但SwitchManager的ClassLoader是AppClassLoader,由于ClassLoader不一样,会导致功能开关修改后无法生效。

<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功能开关的文档中补充这种情况的说明。

sczyh30 commented 2 years ago

感谢反馈,社区一起来看一下这个 case