如果未设置production
,我希望我的默认有效个人资料为-Dspring.profiles.active
。
我在我的application.properties
中尝试了以下操作,但它不起作用:
spring.profiles.default=production
Spring-boot version = 1.3.5.RELEASE
答案 0 :(得分:50)
您在这里做的是设置默认的默认配置文件(如果您没有指定@Profile
注释,则在任何bean上使用的配置文件)为{{ 1}}。
您实际需要做的是设置默认的有效个人资料,如下所示:
production
答案 1 :(得分:8)
添加--spring.profiles.active=production
示例:
java -jar file.jar --spring.profiles.active=production
答案 2 :(得分:6)
将它放在App.java中:
$key = pack('C*', 1, 2, 3, 4, 5, 6, 7, 8);
$masterbyte = pack('C*', $buffer);
$decmasterkey = mcrypt_decrypt(MCRYPT_DES, $key, $masterbyte, MCRYPT_MODE_ECB);
这是在JHipster
中完成的答案 3 :(得分:6)
我是这样做的
System.setProperty("spring.profiles.default", "dev");
在main(...)
答案 4 :(得分:5)
如果你正在使用maven我会做这样的事情:
生产您的默认个人资料:
<properties>
<activeProfile>production</activeProfile>
</properties>
作为其他档案的一个例子:
<profiles>
<!--Your default profile... selected if none specified-->
<profile>
<id>production</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<activeProfile>production</activeProfile>
</properties>
</profile>
<!--Profile 2-->
<profile>
<id>development</id>
<properties>
<activeProfile>development</activeProfile>
</properties>
</profile>
<!--Profile 3-->
<profile>
<id>otherprofile</id>
<properties>
<activeProfile>otherprofile</activeProfile>
</properties>
</profile>
<profiles>
在您的application.properties中,您必须设置:
spring.profiles.active=@activeProfile@
每次都适合我,希望它能解决你的问题。
答案 5 :(得分:2)
首先,对于下面的解决方案,有必要了解始终,弹簧靴将读取application.properties
文件。因此,对方的个人档案文件仅会补充和替换以前定义的属性。
考虑以下文件:
application.properties
application-qa.properties
application-prod.properties
1)非常重要。 application.properties
和仅此文件必须具有以下行:
spring.profiles.active=@spring.profiles.active@
2)更改QA和PROD配置文件中所需的内容,以查看环境之间的差异。
3)通过命令行,使用以下任一选项启动spring boot应用程序:
它将使用默认的application.properties
文件启动应用:
mvn spring-boot:run
它将加载默认的application.properties
文件,并在application-qa.properties
文件之后,替换和/或补充默认配置:
mvn spring-boot:run -Dspring.profiles.active=qa
此处相同,但使用生产环境而不是质量检查:
mvn spring-boot:run -Dspring.profiles.active=prod
答案 6 :(得分:2)
我们在Java中设置spring.profiles.active
时遇到了类似的问题。
这是我们在尝试了四种提供spring.profiles.active
的方式之后最终得出的结论。
在java-8
$ java --spring.profiles.active=dev -jar my-service.jar
Gives unrecognized --spring.profiles.active option.
$ java -jar my-service.jar --spring.profiles.active=dev
# This works fine
$ java -Dspring.profiles.active=dev -jar my-service.jar
# This works fine
$ java -jar my-service.jar -Dspring.profiles.active=dev
# This doesn't works
在java-11
$ java --spring.profiles.active=dev -jar my-service.jar
Gives unrecognized --spring.profiles.active option.
$ java -jar my-service.jar --spring.profiles.active=dev
# This doesn't works
$ java -Dspring.profiles.active=dev -jar my-service.jar
# This works fine
$ java -jar my-service.jar -Dspring.profiles.active=dev
# This doesn't works
注意::如果您在spring.profiles.active
文件中指定application.properties
,请确保为Java提供spring.config.location
或spring.config.additional-location
选项如上所述。
答案 7 :(得分:1)
当前使用Maven + Spring Boot。我们的解决方案如下:
application.properties
#spring.profiles.active= # comment_out or remove
securityConfig.java
@Value(${spring.profiles.active:[default_profile_name]}")
private String ACTIVE_PROFILE_NAME;
信用以MartinMlima开始。此处提供了类似的答案:
How do you get current active/default Environment profile programmatically in Spring?
答案 8 :(得分:1)
您还可以在@Profile批注中包含多个列表
@Profile({"dev","default"})
如果将“默认”设置为附加值,则不必指定spring.profiles.active
答案 9 :(得分:0)
在AWS LAMBDA中:
对于$ sam local
,请在sam模板yml文件中添加以下行:
Resources:
FunctionName:
Properties:
Environment:
Variables:
SPRING_PROFILES_ACTIVE: local
但是在AWS Console中: 在您的Lambda Environment变量中只需添加:
密钥:JAVA_TOOL_OPTIONS
值:-Dspring.profiles.active=dev
答案 10 :(得分:0)
如果正在创建Spring Boot应用程序,则根据环境可以有一个单独的应用程序属性文件。 例如-开发环境的属性文件, application-dev.properties :
spring.hivedatasource.url=<hive dev data source url>
spring.hivedatasource.username=dev
spring.hivedatasource.password=dev
spring.hivedatasource.driver-class-name=org.apache.hive.jdbc.HiveDriver
application-test.properties:
spring.hivedatasource.url=<hive dev data source url>
spring.hivedatasource.username=test
spring.hivedatasource.password=test
spring.hivedatasource.driver-class-name=org.apache.hive.jdbc.HiveDriver
还有一个主要的application.properties文件来选择配置文件:
application.properties:
spring.profiles.active=dev
server.tomcat.max-threads = 10
spring.application.name=sampleApp
如下定义数据库配置:
@Configuration
@ConfigurationProperties(prefix="spring.hivedatasource")
public class DBConfig {
@Profile("dev")
@Qualifier("hivedatasource")
@Primary
@Bean
public DataSource devHiveDataSource() {
System.out.println("DataSource bean created for Dev");
return new BasicDataSource();
}
@Profile("test")
@Qualifier("hivedatasource")
@Primary
@Bean
public DataSource testHiveDataSource() {
System.out.println("DataSource bean created for Test");
return new BasicDataSource();
}
这将根据application.properties文件中设置的活动配置文件自动创建BasicDataSource bean。 运行Spring-boot应用程序并进行测试。
请注意,这将首先创建一个空bean,直到调用getConnection()为止。 连接可用后,您可以使用该DataSource bean获得url,驱动程序类等。
答案 11 :(得分:0)
如果您将AWS Lambda与SprintBoot结合使用,则必须在环境变量下声明以下内容:
键:JAVA_TOOL_OPTIONS和值:-Dspring.profiles.active = dev
答案 12 :(得分:0)
无需每次更改源代码即可完成此操作的巧妙方法是使用OS环境变量SPRING_PROFILES_ACTIVE
:
export SPRING_PROFILES_ACTIVE=production
答案 13 :(得分:0)
尝试一下:
@PropertySource("classpath:${spring.profiles.active:production}_file.properties")
答案 14 :(得分:0)
如果您使用 application.yml 作为您的配置,则将其添加到其中,以设置默认的活动配置文件:
spring:
profiles:
active: production