spring.profiles.active不尊重

时间:2016-12-23 00:17:00

标签: java spring spring-boot spring-profiles spring-properties

application.properties 

我们有一行

spring.profiles.active=LOCALHOST

application-DEV.properties

,我们有一行

spring.profiles.active=DEV,dbcache,metrics,AWS

。使用

运行应用程序时
java -jar app.war -Dspring.profiles.active=DEV

控制台输出显示

The following profiles are active: LOCALHOST

,即

-Dspring.profiles.active=DEV 

参数不受尊重,应用仍然使用默认的LOCALHOST配置文件。

2 个答案:

答案 0 :(得分:2)

我的java [ options ] -jar file.jar [ argument ... ] 命令的手册页说:

-jar

也就是说,JVM选项(例如属性设置)必须在 main(或主类)之前。之后的任何内容都被视为传递给import java.util.Arrays; class Sort { public static <K extends Comparable<K>,V> void sort(K[] k, V[]v) { class Kv implements Comparable<Kv> { K k; V v; public Kv(K k, V v) { this.k = k; this.v = v; } public int compareTo(Kv other) { return k.compareTo(other.k); } } if (k.length != v.length) { throw new Error("not same length"); } Kv[] kv = new Kv[k.length]; for (int i=0; i<k.length; i++) { kv[i] = new Kv(k[i], v[i]); } Arrays.sort(kv); for (int i=0; i<k.length; i++) { k[i] = kv[i].k; v[i] = kv[i].v; } } public static void main(String[] args) { Character[] v = {'a', 'b', 'c'}; Integer[] k1 = {5, 3, 2}; Sort.sort(k1, v); for(int i=0; i<k1.length; i++) { System.out.println(v[i]); } } } 的参数。

这实际上有一个目的,而不仅仅是迂腐 - 你可能有一个工具可以启动一个子JVM(例如,Maven可以这样做),并希望提供在那里传递的参数。

答案 1 :(得分:0)

以防万一有人遇到与我相同的问题,请确保将您的主类args传递给spring。希望对您有所帮助。

public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
}