在Java web应用程序中使用可配置属性

在Java web应用程序中使用可配置属性,java,jakarta-ee,configuration,Java,Jakarta Ee,Configuration,我在Tomcat6上部署了一个基于java的web应用程序。我需要将一些属性设置为可配置的。目前,我已经创建了一个config.properties文件,并将该文件加载到静态属性对象中 我想知道是否有其他有效的方法或框架可以在Java web应用程序中使用可配置属性?另一种选择是使用一个类,其中定义了项目的所有常量。这将为您提供一种集中的方式,使您能够高效地配置应用程序 尽管如此,我认为使用配置文件是最好的选择,因为(我不认为)每次更改后都必须重新编译代码 编辑:看到上面的一些评论,你可以做的是

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


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

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

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

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

试试这个样本

这是放置在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中属性的用法。

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

使用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>


即使我使用静态类从属性文件加载,我相信这是最好的!由谁配置?按操作?由管理员用户通过用户界面。。。?根据生产环境中的操作、登台环境中的支持团队以及开发环境中的开发人员,代码不能在生产环境中重新编译,所以不能使用集中的类here@orak例如我想是的。如果是这种情况,那么您要么继续使用配置文件,要么使用我建议的后端系统。后端系统的优点是它不需要访问机器。我已经在使用这个方法了。这个apporach的问题是,无论何时向应用程序发出请求,我都必须加载属性(我认为apporach不好),或者我必须将其加载到静态属性对象中,并且当文件更改时它不会得到更新,我必须重新加载应用程序