当前位置: 首页 > 面试题库 >

在Spring,Maven和Eclipse中处理XML文件中的属性值的最佳方法

荆学民
2023-03-14
问题内容

正如任何Spring程序员所知道的,我正在一个Spring WebFlow项目中,该项目在XML文件中具有很多属性值。我有数据库用户名,密码,URL等。

我们将Eclipse与Spring WebFlow和Maven结合使用。我们试图让SA执行构建,但是SA不想进入XML文件来更改值,但是另一方面,我们不知道生产值。我们如何处理呢?


问题答案:

大多数SA更愿意和更有信心处理.properties文件而不是文件.xml

Spring提供了PropertyPlaceholderConfigurer,可让你将所有内容定义到一个或多个.properties文件中,并用中的占位符代替applicationContext.xml

创建一个app.properties下层src/main/resources/文件夹:

... ...

# Dadabase connection settings:
jdbc.driverClassName=org.postgresql.Driver
jdbc.url=jdbc:postgresql://localhost:5432/app_db
jdbc.username=app_admin
jdbc.password=password

... ...

applicationContext.xml像这样使用PropertyPlaceholderConfigurer :

... ...

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

... ...

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  <property name="driverClassName" value="${jdbc.driverClassName}" />
  <property name="url" value="${jdbc.url}" />
  <property name="username" value="${jdbc.username}" />
  <property name="password" value="${jdbc.password}" />
</bean>

请查看Spring PropertyPlaceholderConfigurer示例以获取更多详细信息。

此外,从应用程序部署的角度来看,我们通常以某种可html" target="_blank">执行文件格式打包应用程序,而.properties文件通常打包在可执行文件war或ear文件中。一个简单的解决方案是将PropertyPlaceholderConfigurer bean配置为以预定义的顺序从多个位置解析属性,因此在部署环境中,可以使用固定位置或环境变量来指定属性文件,还请注意,为了简化在SA的部署/配置任务中,我们通常使用单个外部.properties文件来定义所有运行时配置,如下所示:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="locations">
    <list>
      <!-- Default location inside war file -->
      <value>classpath:app.properties</value>
      <!-- Environment specific location, a fixed path on server -->
      <value>file:///opt/my-app/conf/app.properties</value>
    </list>
  </property>
  <property name="ignoreResourceNotFound" value="true"/>
</bean>

希望这可以帮助。



 类似资料:
  • 问题内容: 我必须在php中解析大型XML文件,其中之一是6.5 MB,它们甚至可能更大。如我所读,SimpleXML扩展将整个文件加载到一个对象中,这可能不是很有效。以您的经验,最好的方法是什么? 问题答案: 对于大文件,您将要使用SAX解析器而不是DOM解析器。 使用DOM解析器,它将读取整个文件并将其加载到内存中的对象树中。使用SAX解析器,它将顺序读取文件并调用用户定义的回调函数来处理数据

  • 问题内容: 我正在使用Spring批处理下载一个大文件来处理它。场景很简单: 无需保存输入文件数据。 我们可能同时运行多个(相同场景的)作业实例 我正在寻找最佳实践来处理这种情况。 我是否应该创建Tasklet以便在本地下载文件,而不是通过常规步骤开始处理它? 在这种情况下,我需要考虑一些临时文件问题(确保删除了该文件,确保不覆盖其他临时文件,等等。) 另一方面,我可以下载它并将其保留在内存中,但

  • 问题内容: 我有一个XML文件,我知道需要更改其值的节点名称。 节点名称是ipAddress。 我可以使用JDOM,获取文档,获取节点并更改值并将其写入,也可以编写XSLT文件。 代码更改值来自Java,因此我的问题是哪个选项更好?XML文件的大小可以不同。 另一个与XSLT相关的问题:是否可以编写一个XSLT文件,这样我就不会列出所有XML节点,而只是指定like ,然后采用新值,以及如何从Ja

  • 我在xml文件中有以下数据: 我编写了下面的代码,可以读取文件中的所有节点。 我的问题是如何读取xml文件中属性type=""的值并将其作为String获取? 提前感谢。

  • 问题内容: 我有三个JPA实体类,并具有以下层次结构: 那是: 使用Spring Data JPA,为此类实体编写存储库类的最佳方法是什么? 我知道我可以写这些: 但是,如果在类中有一个字段,我在: 我还要在其他两个存储库中编写这种方法,这有点烦人。是否有更好的方法来处理这种情况? 我想知道的另一点是应该是只读存储库(即扩展类),而其他两个存储库应公开所有CRUD操作。 让我知道可能的解决方案。

  • 我将基于Maven的Spring应用打包为: 奇怪的事情发生了。在生成的jar的META-INF中,我发现重复的pom.xml和pom.properties文件。有人能解释一下吗?谢谢。 这里是提取pom.xml 命令的输出: ApacheMaven 3.0.4(r1232337;2012-01-17 15:44:56 0700)Maven主页:C:\Apache-Maven-3.0.4\bin。