-
Notifications
You must be signed in to change notification settings - Fork 504
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
【bug】java.lang.IllegalArgumentException: Unable to instantiate org.springframework.boot.env.EnvironmentPostProcessor [com.baomidou.mybatisplus.autoconfigure.SafetyEncryptProcessor] #611
Comments
可以发一下更多的日志吗,instantiate这个后面应该有更具体的错误原因,我也出现过类似错误,已经可以自己手动解决了 |
我也出现了同样的问题,原因这个依赖是宿主的,但是biz本身没有这个依赖,但是biz是基于spring创建的,在初始化的时候会在EnvironmentPostProcessorApplicationListener把宿主对应的依赖类拿出来通过Class,forname进行加载.请问这个问题最后是怎么解决的? 难道要通过sofaboot进行spring上下文隔离? @penglinzhang @gaosaroma |
是这个问题导致的,因为 EnvironmentPostProcessorApplicationListener 的这段逻辑会从基座里搜索 EnvironpentPostProcessor,然后搜索出了 解决方法:模块里也声明下mybatis-plus-boot-starter这个依赖,pom 的scope 可以设置为 provided。这是启动的成功的截图 |
这样修改是能解决现有的问题,但是master-biz里面的com.baomidou.mybatisplus.autoconfigure.SafetyEncryptProcessor,在非master的biz启动时也要进行处理,这个逻辑本身是不是有点问题呢?是否可以改成当启动非master的biz的时候,不必要的不处理 |
如果有方案,可以提 proposal 或者 PR。 |
现在解决方案比较粗暴,就是把宿主应用的这个依赖在Biz应用中声明(虽然没啥用),然后scope为provided,可以暂时解决这个问题。 |
我有一个方案,EnvironmentPostProcessorApplicationListener扫描EnvironmentPostProcessor是可以传入resourceLoader,而这个resourceLoader正是application.getResourceLoader(),我暂且改造启动类SpringApplication的resourceLoader为BizClassLoader(一般正是null)程序可以启动成功,至于有没有其他影响还不清楚,但初步看是能成的。 |
这样如何呢 |
Describe the bug
当宿主应用依赖多于业务应用且该依赖实现了SpringBoot的扩展点EnvironmentPostProcessor时,采用合并部署模式,业务应用启动报错。报错信息如下:
Steps to reproduce
宿主应用: sofa-ark-spring-guides
业务应用: spring-boot-ark-biz
① 宿主应用修改pom.xml:
② 宿主应用修改启动类:
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
③ 业务应用修改pom.xml:
Environment
java -version
): 1.8.0_73uname -a
): Windows10The text was updated successfully, but these errors were encountered: