java - 如何在XML中配置属性?

标签 java spring

我计划 Maven 开发一个实际上需要读取配置数据的模块,如下所示,其中标记 <path>将使用不同的路径名重复多次,并且可以相同 <pathtype>以及不同的 URL 和参数,然后尝试访问 Java 类中的这些 URL 和路径。

在Java中我应该能够阅读所有<pathurl>给定类型的标签及其参数。然后我会用Java一一处理。

配置此数据并用 Java 读取的最佳方法是什么?应该是 Java 的正常属性文件加载过程,还是有任何使用 spring 或任何其他实用程序的新最佳实践。

基本上我想知道除了这种 XML 格式之外还有什么方法可以配置数据然后解析它?由于该 XML 中的数据是静态的,因此我的客户不想使用数据库。

<path>
  <pathname>mypath</pathname>
  <pathtype>httpfile</pathtype>
  <pathurl>http://acdsds:8380/gis/</pathurl>
  <params>
    <user>sad</user>
    <password>spwd</password>
    <httprescd>100</httprescd>
    <mexist>DROD_MEF.gif</mexist>
  </params>
</path>

最佳答案

在 spring 中使用某些属性(例如 URL、密码和唯一 key )配置软件时 PropertyPlaceHolderConfigurer是你最好的选择。

来自 spring 文档:

You use the PropertyPlaceholderConfigurer to externalize property values from a bean definition in a separate file using the standard Java Properties format. Doing so enables the person deploying an application to customize environment-specific properties such as database URLs and passwords, without the complexity or risk of modifying the main XML definition file or files for the container.

您要做的是将所有配置数据放入属性文件中:

##JDBC related properties start here##
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.dialect=org.hibernate.dialect.MySQLDialect
jdbc.databaseURL=jdbc:mysql://localhost:3306/databaseName
jdbc.userName=root
jdbc.password=root  
##JDBC related properties end here##
## path Configuration start here##
path.name=mypath
path.type=httpfile
path.url=http://acdsds:8380/gis/
## path Configuration ends here##

然后,配置spring访问外部属性文件(假设你的属性文件名为settings.properties):

<!--settings for accessing external property files--> 
    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>                  
                <value>/yourPathToPropertiesFile/settings.properties</value>                   
            </list>
        </property>
    </bean>  

配置 PropertyPlaceholderConfigurer 后,无论您想要在何处,都可以通过简单地使用 @value 注释来访问您的属性。

@Value("${path.name}")
String pathName;

您甚至可以使用属性文件来配置数据源和许多其他内容:

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

关于java - 如何在XML中配置属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21470707/

相关文章:

java - 如何在 Spring 中从上下文设置静态最终参数?

java - 将自定义证书添加到 OkHttp 客户端

java - 从命令行获取参数

hibernate - 在 HSQLDB 中创建架构的启动脚本

java - 从消费应用程序读取 spring 属性

java - 哪个开源 Python 或 Java 库提供了一种在 ESRI Shapefile 上绘制圆圈的简单方法?

java - Apache 点燃数据流

java - spring 是否负责关闭您的 ExecutorService?

java - import com.fasterxml.jackson.databind.ObjectMapper 无法解析

java - Easymock 调用 Autowiring 的对象方法