spring-cloud兼容性问题
furaul opened this issue · 1 comments
dubbo-spring-boot-project版本2.7.7
spring-framework版本4.3.25.RELEASE
spring-boot版本1.5.22.RELEASE
spring-cloud版本1.x.x.RELEASE(1.1.6.RELESE 1.3.6.RELESE)
启动过程中,在org.apache.dubbo.spring.boot.env.DubboDefaultPropertiesEnvironmentPostProcessor类中通过org.springframework.core.env.Environment#getProperty(java.lang.String)方法读取application.properties中的配置失败。
经过调试发现是有一个ConfigFileApplicationListener$ConfigurationPropertySources中的source为空,没有application.properties相关配置。
有spring-cloud相关依赖的时候,启动的方法栈中有spring-cloud相关context类;去掉spring-cloud相关依赖后,启动的方法栈中没有spring-cloud相关context类,该问题即可解决,大家有没有比较好的解决方案。
找到原因了,spring-cloud引入后,配置文件的加载机制有变化,spring-cloud会先加载bootstrap.*等配置文件,然后DubboDefaultPropertiesEnvironmentPostProcessor执行,然后spring-boot会加载application.*等配置文件。
在DubboDefaultPropertiesEnvironmentPostProcessor执行的时候application.*等配置文件还未加载成功。
保证加载顺序执行正确,或者将配置写在bootstrap.*配置文件中,都可以解决该问题。