spring-boot - Springboot 初始化依赖于 Liberty application.xml 并显示类路径未知异常
问题描述
我试图在 WebSphere Liberty Core 18.0.0.2 中部署我的 springboot 应用程序。我在服务器中有两个 xml 文件 -server.xml
和application.xml
. application.xml
包含如下应用程序特定配置。
<library description="Oracle JDBC Library" id="OracleJDBCLib" name="OracleJDBCLib">
<fileset dir="${shared.resource.dir}/jdbc/oracle" includes="*.jar"/>
</library>
<jdbcDriver id="OracleProvider" libraryRef="OracleJDBCLib"/>
<springBootApplication contextRoot="/provider" id="provider" location="provider-exec.war" type="war">
<classloader commonLibraryRef="OracleJDBCLib" />
</springBootApplication>
它被包含在 server.xml 中
<include location="${server.output.dir}/application.xml" optional="true" onConflict="MERGE"/>
问题是springboot正在将它application.xml
用于不应该发生的bean初始化。根据我的理解,springboot 战争是自包含的,它不会寻找容器特定的配置。
为了验证,我已将其重命名application.xml
为springbootapp.xml
并且它有效。应用程序运行良好。
请让我知道是否需要进行任何配置更改以限制 springboot 不查找容器特定配置?
解决方案
如 Spring Boot 参考指南(外部化配置)中所述,它将查找名为application.properties
. 然而,他们没有告诉你的是,application.properties
这也可能是一个application.xml
.
可以java.util.Properties
从文件.properties
或.xml
文件加载对象。Spring(以及因此 Spring Boot)对此具有隐式支持。
所以总之配置加载会检测application.properties
,application.yml
而且application.xml
。
要修复你可以做两件事
- 重命名文件(就像你做的那样)
- 例如,将其移出类路径的根目录并将其放入
META-INF
。
推荐阅读
- amazon-web-services - Trigger Lambda in different aws region from Kinesis Data Stream Event
- python - Trying to get a specific column value out of parent row in qtreeview
- angular - Openshift: use nginx official image instead of one from OC registry
- angularjs - Not recognized camelcase parameters in downgraded component in an Angular hybrid application
- python - how can I call/import a pre-trained model (neural network) in python to Matlab?
- r - 根据另一行是否唯一选择一行的值
- python - 如何将二进制 blob 分割成矩形
- javascript - 有没有办法让第二个函数使用第一个函数:语法
- php - 如何在 DB 中找到实际的联系表 7 结构?
- java - JVM JIT 实际执行的任何示例?