1

我在 Tomcat 6 上部署了一个基于 Java 的 Web 应用程序。我需要将一些属性设置为可配置的。目前我已经创建了一个 config.properties 文件并将该文件加载到静态 Properties 对象中。

我想知道是否有任何其他有效的方法或框架可以在 Java Web 应用程序中使用可配置属性?

4

4 回答 4

0

您可能拥有的另一种选择是创建一个类,其中定义了项目的所有常量。这将为您提供一种集中方式,您可以在其中有效且高效地配置您的应用程序。

然而话虽如此,我认为使用配置文件是最好的选择,因为(我不认为)每次更改后都必须重新编译代码。

编辑:看到上面的一些评论,你可以做的是在你的数据库中有一个单独的表,你可以在其中存储所有常量。然后,您可以通过后端 Web 界面将此表提供给系统管理员和其他支持人员。

于 2012-08-01T05:17:36.117 回答
0

试试这个样本;

这是放在 com.package 中的示例 Resource.properties 文件;

     name=John
     email=john@company.com
     description=John is a Java software developer

访问喜欢这样;

     private static final String PROPERTIES_FILE = "com/package/Resource.properties";

     Properties properties = new Properties();  
     properties.load(this.getClass().getResourceAsStream(PROPERTIES_FILE));  
     String name = props.getProperty("name");  
     String email = props.getProperty("email");  
     String description = props.getProperty("description");

使用可配置属性的另一个框架是JSF。这个示例是 JSF 中属性的用法。

于 2012-08-01T05:39:36.643 回答
0

企业级的答案是通过像Spring这样的集成框架加载您的配置。不过,如果您的应用程序相当小,我不一定会推荐它。

于 2012-08-01T06:59:06.947 回答
0

使用 Spring Framework 加载属性:

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="classpath:configuration.properties"></property>
    </bean>

    <!-- Here is configutaion for connection pool -->
    <!-- Those ${} properties are from the configuration.properties file -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="${db.driver}"/>
        <property name="url" value="${db.url}"/>
        <property name="username" value="${db.user}"/>
        <property name="password" value="${db.pass}"/>
    </bean>

</beans>
于 2012-08-01T07:19:19.000 回答