【发布时间】:2017-06-06 06:48:30
【问题描述】:
我有一个实用程序类,它具有与电子邮件发件人相关的常见配置,配置会根据Staging 和Production 等环境而变化。现在如何根据环境动态选择配置?
这是我的代码,
EmailUtility.java
package com.housecar.common;
public class EmailUtility {
//For staging
public static final String FROM_EMAIL_ID = "xx12@xyz.com";
public static final String FROM_NAME = "xyz";
static final String SMTP_USERNAME = "xx12@xyz.com";
static final String SMTP_PASSWORD = "15sss67$";
public static final String REPLY_EMAIL_ID = "xx12@xyz.com";
public static final String MAIL_SMTP_PORT = "587";
public static final String MAIL_SMTP_SOCKET_FACTORY_PORT = "587";
public static final String SMTP_HOST = "smtp.gmail.com";
public static final String MAIL_SMTP_SOCKETFACTORY_CLASS = "javax.net.ssl.SSLSocketFactory";
//for production
/*public static final String FROM_EMAIL_ID = "admin@xyz.com";
public static final String FROM_NAME = "xyz";
static final String SMTP_USERNAME = "AKYeeeELEQAGAA"; // Replace with
// your SMTP
// username.
static final String SMTP_PASSWORD = "gvwwwwwbgpGm/C/LmUYUK5HosQar7mTSwjl5MFeBRR";
public static final String REPLY_EMAIL_ID = "admin@xyz.com";
public static final String MAIL_SMTP_PORT = "587";
public static final String MAIL_SMTP_SOCKET_FACTORY_PORT = "587";
public static final String SMTP_HOST = "email-smtp.us-east-1.amazonaws.com";
public static final String MAIL_SMTP_SOCKETFACTORY_CLASS = "javax.net.ssl.SSLSocketFactory";*/
}
在我的代码中,我手动注释掉了配置!
【问题讨论】:
-
您应该查看属性文件。
-
你没有使用任何属性文件或类似的东西。 ??
-
动态是什么意思?在运行应用程序时或仅通过任何启动更改配置?
-
您可以创建一个属性文件,然后根据您的目的读取它,例如用于生产
production.mail.smtp.port=587和暂存staging.mail.smtp.port=587 -
将属性添加到
application.properties在开始之前根据 evn 定义它们。例如:from.email.id = xx12@xyz.com 并将属性注入您的实用程序类。
标签: java spring spring-boot constants