0

我想在我的基于 Java/Spring 的网站上有一组全局变量。

我在想这样的事情:

  1. 电子邮件发件人(只有 1 个值,因为它是办公室的通用电子邮件)

  2. 电子邮件服务器 IP/主机(我们使用自己的 smtp 服务器)

  3. 以及其他我无法在短时间内想到的事情。

我进行了搜索,但在哪里/如何做这件事上没有任何有用的信息。

谢谢!:)

4

3 回答 3

1

对于简单直接的解决方案,我建议您使用存储在 WebContent 目录下的 (config) 目录中的属性文件。以下是有关如何从文件中读取属性的基本代码。(随意根据您的需要对其进行修改。)创建一个接口或类来包含静态属性键。

对于更复杂的方法,您还可以考虑 Apache Commons 配置库。

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;
}
}
于 2013-01-23T05:16:18.933 回答
-2

创建一个具有公共静态变量的类并将它们用作全局变量。如果您希望每个事务的全局变量在 java ThreadLocal 上设置变量并使用它们。

于 2013-01-23T03:04:03.270 回答
-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";
于 2013-01-23T03:49:25.727 回答