我计划 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/