我希望在我的基于Java / Spring的网站上有一组全局变量。
我在考虑这样的事情:
电子邮件发件人(只有1个值,因为它是办公室的通用电子邮件)
电子邮件服务器IP /主机(我们使用自己的smtp服务器)
以及我在短时间内想不到的其他事情。
我做了一次搜索,但没有找到有用的地方/怎么做。
谢谢! :)
答案 0 :(得分:1)
对于简单直接的解决方案,我建议您使用存储在WebContent目录下的(config)目录中的属性文件。以下是有关如何从文件中读取属性的基本代码。 (可以根据需要随意修改它。)创建一个包含静态属性键的接口或类。
对于更复杂的方法,您还可以考虑使用Apache Commons Configuration库。
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;
}
}
答案 1 :(得分:-2)
创建一个具有公共静态变量的类,并将它们用作全局变量。 如果你想为每个事务设置全局变量,请在java ThreadLocal上设置变量并使用它们。
答案 2 :(得分:-2)
如果您希望它是可配置的,请尝试将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";