Java/Spring ベースの Web サイトに一連のグローバル変数を設定したいと考えています。
次のようなことを考えています。
電子メールの送信者 (オフィスの一般的な電子メールであるため、値は 1 つだけになります)
メール サーバーの IP/ホスト (独自の smtp サーバーを使用)
そして、私がすぐに思いつかない他のこと。
私は検索を行いましたが、これをどこで/どのように行うかについては何も役に立ちませんでした。
ありがとう!:)
単純でわかりやすい解決策として、WebContentディレクトリの下の(config)ディレクトリに保存されているプロパティファイルを利用することをお勧めします。以下は、ファイルからプロパティを読み取る方法に関する基本的なコードです。(必要に応じて自由に変更してください。)静的プロパティキーを含むインターフェイスまたはクラスを作成します。
より複雑なアプローチについては、ApacheCommonsConfigurationライブラリを検討することもできます。
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class ConfigurationReader {
private static final String FILE_SEPARATOR_KEY = "file.separator";
private String configDirectory; // initialised with ServletContext absolute path
private String configFileName; // filename of the properties file
private Properties properties;
public void init() throws IOException {
InputStream inputStream = new FileInputStream(getFileConfigPath(configDirectory, configFileName));
try {
properties = new Properties();
properties.load(inputStream);
}
finally {
try {
inputStream.close();
}
catch(Exception e) {}
}
}
public String getProperty(String key) {
return properties.getProperty(key);
}
private String getFileConfigPath(String directory, String fileName) {
StringBuilder sb = new StringBuilder();
sb.append(directory);
if(!sb.substring((sb.length() - 1)).equals(System.getProperty(FILE_SEPARATOR_KEY))) {
sb.append(System.getProperty(FILE_SEPARATOR_KEY));
}
sb.append(fileName);
return sb.toString();
}
public String getConfigDirectory() {
return configDirectory;
}
public void setConfigDirectory(String configDirectory) {
this.configDirectory = configDirectory;
}
public String getConfigFileName() {
return configFileName;
}
public void setConfigFileName(String configFileName) {
this.configFileName = configFileName;
}
}
public static 変数を持つクラスを作成し、それらをグローバル変数として使用します。トランザクションごとにグローバル変数が必要な場合は、変数を java ThreadLocal に設定して使用します。
構成可能にしたい場合は、DeploymentDescripter (web.xml) でそれらをコンテキスト パラメーターとして構成してみてください。
<context-param>
<param-name>email</param-name>
<param-value>xxx@yyyy.com</param-value>
</context-param>
それ以外の場合は、定数を含む Util クラスを作成し、定数変数を次のように宣言できます。
public static final String EMAIL="xxx@yyy.com";