实际开发中会遇到不同的生产环境的参数不一样,要根据生产环境来选择实际的参数。
比如我后端需要有一个 url 请求,这个 url 请求在不同的环境下(dev,test,alpha,beta,product)需要访问相应的链接。那么我可以在 application.properties 或者 application.yml 文件中写不同的 url, 根据环境变量判断使用哪一个。
所以,看我的,下面是解决办法
1 2 3 4 5 6 7 8
| url.auth.prefix.dev=http://dev.xx.com url.auth.prefix.test=http://test.xx.com url.auth.prefix.alpha=http://alpha.xx.com url.auth.prefix.beta=http://beta.xx.com url.auth.prefix.prod=http://xx.com
url.api.login=/auth/login
|
ENVUtil.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| @Component public class ENVUtil {
private static String env;
@Value("${env}") public void setEnv(String env) { ENVUtil.env = env; }
public static ENV getENV() { try { return ENV.valueOf(env.toUpperCase()); } catch (Exception e) { return ENV.DEV; } } }
|
ENV.java
1 2 3 4 5 6 7 8
| public enum ENV { DEV, TEST, ALPHA, BETA, PROD }
|
URLUtil.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| @Component public class URLUtil {
private static String loginUrl;
private static ENV env = ENVUtil.getENV();
private static String authDevPrefix;
private static String authTestPrefix;
private static String authAlphaPrefix;
private static String authBetaPrefix;
private static String authProdPrefix;
private static String loginApi;
@Value("${url.auth.prefix.dev}") public void setAuthDevPrefix(String authDevPrefix) { URLUtil.authDevPrefix = authDevPrefix; }
@Value("${url.auth.prefix.test}") public void setAuthTestPrefix(String authTestPrefix) { URLUtil.authTestPrefix = authTestPrefix; }
@Value("${url.auth.prefix.alpha}") public void setAuthAlphaPrefix(String authAlphaPrefix) { URLUtil.authAlphaPrefix = authAlphaPrefix; }
@Value("${url.auth.prefix.beta}") public void setAuthBetaPrefix(String authBetaPrefix) { URLUtil.authBetaPrefix = authBetaPrefix; }
@Value("${url.auth.prefix.prod}") public void setAuthProdPrefix(String authProdPrefix) { URLUtil.authProdPrefix = authProdPrefix; }
@Value("${url.api.login}") public void setLoginApi(String loginApi) { URLUtil.loginApi = loginApi; }
@PostConstruct public void init() { switch (env) { case DEV: loginUrl = authDevPrefix + loginApi; break; case TEST: loginUrl = authTestPrefix + loginApi; break; case ALPHA: loginUrl = authAlphaPrefix + loginApi; break; case BETA: loginUrl = authBetaPrefix + loginApi; break; case PROD: loginUrl = authProdPrefix + loginApi; break; default: loginUrl = authDevPrefix + loginApi; } }
public static String getLoginUrl() { return loginUrl; } }
|