Java Spring概要文件在Linux中不起作用
我有一个在Windows上开发的web应用程序,之后我将其部署到Linux(过渡nad生产) 我为每个环境创建了3.properties文件:Java Spring概要文件在Linux中不起作用,java,linux,spring,environment-variables,spring-profiles,Java,Linux,Spring,Environment Variables,Spring Profiles,我有一个在Windows上开发的web应用程序,之后我将其部署到Linux(过渡nad生产) 我为每个环境创建了3.properties文件: application-dev.properties 应用程序-staging.properties application-prod.properties 我决定实现以下解决方案——在每台机器上创建具有相关值(dev/staging/prod)的环境变量,并根据该变量加载corect.properties文件 这个解决方案在Windows上运行得非
- application-dev.properties
- 应用程序-staging.properties
- application-prod.properties
<context-param>
<param-name>contextInitializerClasses</param-name>
<param-value>com.app.server.configuration.ConfigurableApplicationContextInitializer</param-value>
</context-param>
在Linux中,我在大约一百万个地方定义了这个变量(APP_ENV)。在.environment文件、在.bash文件、在setenv.sh文件中。还有,当我做printenv时,我在那里看到了它
我试图创建一个简单的java类main来打印System.getenv(“APP_ENV”)的值和正在打印的“staging”值
但在我的应用程序中,我总是看到-dev而不是staging
我了解登台的唯一方法是将“硬编码”的活动概要文件添加到web.xml
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>dev</param-value>
</context-param>
spring.profiles.active
发展
但我真的不想这样工作,我希望它能被自动地、平庸地识别出来
请帮助:)原因之一可能是您的tomcat正在另一个用户下运行,因此您可能需要为运行tomcat的用户设置环境变量
您还可以在
$CATALINA_BASE/bin/setenv.sh
文件中为tomcat设置所需的环境变量,原因之一可能是您的tomcat正在另一个用户下运行,因此您可能需要为运行tomcat的用户设置环境变量
您还可以在
$CATALINA_BASE/bin/setenv.sh
文件中设置tomcat所需的环境变量,setenv.sh的正确位置显然是:usr/share/tomcat7/bin
我有一个值为“dev”的旧文件:)
因此,在修复此文件后,它可以完美地工作:)显然setenv.sh的正确位置是:
usr/share/tomcat7/bin
我有一个值为“dev”的旧文件:)
因此,在修复此文件后,它可以完美地工作:)嘿,Zilvinas-谢谢你的回答。我从我的用户那里运行一切——我也是那个安装了Tomcat的人。该值存在于setenv.sh中这是我在setenv.sh:export JAVA_OPTS=“-Dfile.encoding=UTF-8-Xms512m-Xmx4096m-XX:PermSize=128m-XX:MaxPermSize=512m”export APP_ENV=“staging”中的值也许这是不正确的方式?@Vika我想应该是这样的Hey Zilvinas-谢谢你的回答。我从我的用户那里运行一切——我也是那个安装了Tomcat的人。setenv.sh中存在该值这是我在setenv.sh:export JAVA_OPTS=“-Dfile.encoding=UTF-8-Xms512m-Xmx4096m-XX:PermSize=128m-XX:MaxPermSize=512m”export APP_ENV=“staging”可能这是不正确的方式?@Vika我认为应该这样做
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
@Configuration
@PropertySource("classpath:application-${spring.profiles.active}.properties")
public class ContextsConfiguration {
@Bean
public static PropertySourcesPlaceholderConfigurer configurer() {
return new PropertySourcesPlaceholderConfigurer();
}
@Value("${FTPport}")
public String FTPport;
@Value("${FTPserver}")
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>dev</param-value>
</context-param>