如何在< env>WebSphereserver8.5.5的 Boot .war中使用Springprofile读取特定于环境的application-.properties

hwazgwia  于 2023-05-16  发布在  Spring
关注(0)|答案(2)|浏览(91)

我在WebSphere8.5.5服务器中部署了我的 Boot .war文件,并在www.example.com文件中启用了springprofilesapplication.properties,以读取应用程序特定的属性文件。但我不确定如何在WebSphere中使用spring配置文件读取外部application.properties文件。当我把war文件和所有的属性文件打包在一起时,spring profile是工作的,但是我想把属性文件放在war文件之外。

  • 下面是我做的步骤:我在spring Boot 应用程序java文件中使用@PropertySource阅读外部属性文件,但它只访问特定于路径的文件。下面是代码片段@PropertySource({"file: /opt/config/application.properties"}Application.properties文件只有spring.profiles.active-dev我把application-dev.properties文件放在同一个路径,但Sping Boot 应用程序无法读取dev文件。它只能读取application.property@PropertySource中给出的www.example.com文件。我的要求是:

1.我想在WebSphere application.propertiesapplication-dev.propertiesapplication-qa.propertiesapplication-prod.properties外部路径中放置3个文件
1.我将在www.example.com文件中启用spring profileapplication.properties,spring Boot 应用程序应该能够读取相应的环境特定属性文件。
1.如果我将所有4个属性文件打包到war文件中,那么分析可以工作,但是当将它们放在外部路径中时,它无法在WebSphere中读取它们。
据我所知,spring Boot app可以从相同的路径读取spring boot jar之外的外部配置文件。但是我不知道如何从webSphere服务器的外部路径读取相同的文件。请用示例代码片段和步骤帮助我实现WebSphere的Spring Profile。

cbjzeqam

cbjzeqam1#

您不应该使用@PropertySource注解,使用Spring提出的约定,您应该没问题。Spring将在以下位置查找这些属性文件:

  • 当前目录的/config子目录。
  • 当前目录
  • 一个classpath /config包
  • 类路径根

您必须确保在将文件添加到WebSphere时,它们位于这些位置之一。current directory被定义为WebSphere流程的CWD。类路径是WebSphere中定义的类路径。如果您将属性文件添加到这四个位置中的任何一个,那么Spring将能够拾取它们。

egdjgwm8

egdjgwm82#

谢谢Max的快速帮助!根据您的输入,我在WebSphere中实现了以下步骤,以将applictaion.properties文件保持在类路径范围内,并且它正在工作。
1.在WebSphere中创建了新的共享库。环境>共享库>创建新的共享库>用属性文件位置更新了类路径值。(例如opt/IBM/MyFolder/config/properties/myapp/)并保存更改。
1.使用共享库更新Sping Boot 应用程序。Applications > Application Types > WebSphere enterprise applications > myapp > References > Shared library reference > select application > Reference shared libraries >然后添加在1步中创建的共享库。
就是这样。现在myapp正在从给定的共享库路径阅读application.properties文件。我在Springboot应用程序java文件中删除了带有绝对路径的@PropertySource。现在我可以切换配置文件,而无需打包和安装应用程序。

相关问题