应用程序配置(Spring?)

时间:2009-07-27 14:12:56

标签: java spring

我厌倦了所有这些无聊的样板代码来解析应用程序配置,如数据库连接,工作目录,API端点等等。 Spring IoC看起来不错,但这会强制我的应用程序的用户修改XML文件,只是为了编辑数据库URL等等。这也可能在XML文件中非常分散,其中所有其他布线都会出现。

允许最终用户配置服务(不在应用服务器内部运行)的最佳技术是什么?你们有什么用?

6 个答案:

答案 0 :(得分:10)

使用Spring,在XML中进行显式连线,自动布线或其某种组合,以定义“常量”配置,然后将属性文件中的其余部分外部化。数据库凭据就是一个常见的例子。

有关此基准示例,请参阅Spring and Ibatis Tutorial。简短版本:

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

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="${database.class}"/>
    <property name="url" value="${database.url}"/>
    <property name="username" value="${database.username}"/>
    <property name="password" value="${database.password}"/>
</bean>

with database.properties(在类路径中):

database.username=scratch
database.password=scratch
database.class=oracle.jdbc.OracleDriver
database.url=jdbc:oracle:thin:@localhost:1521:XE

答案 1 :(得分:5)

您可以将应用程序配置存储在属性文件中,并使用PropertyPlaceholderConfigurer加载这些属性。

因此,在您的applicationContext文件中,您可能会这样:

<bean id="dataSource" class="com.x.y.z.DataSource">
    <property name="url" value="${dataSource.url}" />
</bean>

dataSource.url属性将从属性文件中加载。

这是我在我正在使用的应用程序中使用的,它使配置更容易!

答案 2 :(得分:2)

不要忘记您可以使用Spring XML文件来构建应用程序,但使用属性文件在这些配置中提供(比如说)数据库URL等。

当您有一组XML文件来构建应用程序,然后提供一组不同的属性文件时,这非常有效,具体取决于您是运行应用程序的开发,测试还是生产版本。

答案 3 :(得分:2)

您仍然可以使用Spring将您的类与IOC(XML,Java配置,自动装配等)连接在一起,但仍然使用属性文件来包含可能会根据数据库连接等部署而更改的值。

看看PropertyPlaceholderConfigurer。这是一篇博文,其中example表示您如何使用它。

答案 4 :(得分:0)

您可以模块化Spring配置文件。因此,您可以为数据库连接创建一个XML文件,然后将其包含(导入)到中央Spring配置文件中。如果用户应该能够修改内容,则可以从模板创建XML文件并(重新)加载应用程序上下文。

答案 5 :(得分:0)

使用此处说明的org.springframework.beans.factory.config.PropertyPlaceholderConfigurer

http://static.springsource.org/spring/docs/2.5.x/reference/beans.html#beans-factory-placeholderconfigurer