java - Spring 管理属性的最佳方式

标签 java spring spring-mvc properties

我正在使用 Spring MVC 编写一个应用程序,我希望可以使用属性文件对其进行配置。我查看了 Spring 的 util 命名空间并发现了这一点:

<util:properties id="MyProperties" location="propertiesPath" />

有了这个,我可以简单地用

注释我的类字段
@Value("myProperty")

并简单地注入(inject)该属性。因此,读取您的属性非常简单。但是当您必须保存它们时,它就不那么直观了。

我偶然发现了很多关于如何正确执行此操作的问题,我认为这最能代表我想说的:Updating a properties file injected by Spring to include a last run timestamp .

我的问题是:为什么在 Spring 中保存属性如此困难?我这样做的方式不对吗?此时我什至想知道以这种方式保存属性是否是一个好的做法,或者我是否应该使用数据库。

从 Oracle 我可以读到:

The Properties class represents a persistent set of properties. The Properties can be saved to a stream or loaded from a stream.

但是 Spring 似乎只使其中之一变得更容易。请赐教。

谢谢。

最佳答案

Spring 主要参与创建应用程序的静态、不变的结构,而不真正参与事务处理或业务逻辑。通常它定义如何处理事务,但通常不参与处理本身。我们经常谈论领域模型和架构的分离——spring是关于架构的。

将某些内容写入某种存储(例如磁盘文件的属性)是事务逻辑(即使您不需要显式事务来执行此操作)。这将是系统的最终用户功能之一,而不是体系结构的一部分——它将是一个功能(即使在这种情况下,最终用户是系统管理员)。 Spring 几乎不支持这种类型的行为——就像它不支持存储有关应用程序上下文动态更改的信息一样。

关于java - Spring 管理属性的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36875283/

相关文章:

Java Swing - 闪烁的 Canvas 图形

java - Android - 更改 SimpleDateFormat 模板

java - 如何从 JSP 刷新/访问模型

java - Spring Boot @ControllerAdvice 异常处理程序未触发

java - Spring MVC 4.2 Jackson解析异常意外字符('%'(代码37))

java - 进程运行的线程数大于tomcat maxThreads

java - 当ListView的Item被选中时如何关闭抽屉导航?

java - 如何使用@Inject?

java - Spring 处理程序映射

java - "Dump"运行集成测试时的hql数据库