更新 Spring 注入的属性文件以包含上次运行时间戳

2024-01-16

我有一个应用程序,它使用 Spring 加载的属性文件。然后将 Properties 实例注入到几个类中。问题是其中一些属性已更新 - 例如我们有一个要存储在这里的lastRun时间戳。也许有更好的方法来存储这样的东西(欢迎建议),但是我该如何更新属性文件呢?

<util:properties id="props" location="some.properties"/>

The props.store(...)方法需要写入或输出流(我假设所有这些都是未知的,因为 Spring 处理此加载)..?

是否有更好的方法,或者我应该只是从 Spring context.xml 传递文件路径并将其发送到各种 bean 并以老式方式加载/存储属性文件?


PropertiesFactoryBean 没有位置属性的访问器,但您可以从 BeanDefinition 获取位置属性。

BeanDefinition def = ctx.getBeanFactory().getBeanDefinition("props");
String location = def.getPropertyValues().getPropertyValue("location").getValue();
File file = ctx.getResource(location).getFile();

EDIT

包括一个示例类来执行此操作。您可以在 bean 定义文件中定义 bean 并在适当的位置注入。

/**
 * Update Spring managed properties
 */
public class SpringPropertyUpdater implements ApplicationContextAware {

    private ConfigurableApplicationContext ctx;
    private static final String LOCATION_PROPERTY = "location";
    private static final Log log = LogFactory.getLog(SpringPropertyUpdater.class);

    /**
     * Update managed properties with new value
     */
    public void  updateProperties(String name, Properties props, String comments) {
        ConfigurableListableBeanFactory fb = ctx.getBeanFactory();
        BeanDefinition bf = fb.getBeanDefinition(name);
        String location = (String) bf.getPropertyValues().getPropertyValue(LOCATION_PROPERTY).getValue();
        Resource res = ctx.getResource(location);
        try {
            File file = res.getFile();
            props.store(new FileOutputStream(file), comments);
        } catch (IOException e) {
            log.error(e);
        }
    }

    /**
     * {@inheritDoc}
     */
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.ctx = (ConfigurableApplicationContext) applicationContext;

    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更新 Spring 注入的属性文件以包含上次运行时间戳 的相关文章

  • 如何在 Openfire 中使用 smack

    你好 我计划开发一个可以连接到 gtalk facebook 等的聊天客户端 我决定将 smack API 与 openfire 一起使用 但我需要很少的指导来了解如何将它与 openfire 服务器一起使用 openfire 是否提供了基
  • 当路径的点超出视野时,Android Canvas 不会绘制路径

    我在绘制路径时遇到了 Android Canvas 的一些问题 我的情况是 我有一个相对布局工作 如地图视图 不使用 google api 或类似的东西 我必须在该视图上绘制一条路径 canvas drawPath polyPath bor
  • (Java) App Engine 中的静态文件无法访问

    The 示例文档 http code google com appengine docs java gettingstarted staticfiles html表示您只需将文件放在 war 或子目录 中 并且应该可以从主机访问它们 只要它
  • 将SQL数据引入jquery availabletag

    我正在尝试制作自动完成文本框 但如何将 SQL 数据包含到 jquery 可用标记并循环它 我无法根据以下代码执行该功能 任何帮助 将不胜感激 谢谢 这是我的预期输出 预期结果演示 http jsfiddle net VvETA 71 jq
  • 文本在指定长度后分割,但不要使用 grails 打断单词

    我有一个长字符串 需要将其解析为长度不超过 50 个字符的字符串数组 对我来说 棘手的部分是确保正则表达式找到 50 个字符之前的最后一个空格 以便在字符串之间进行彻底的分隔 因为我不希望单词被切断 public List
  • 从 MS Access 中提取 OLE 对象(Word 文档)

    我有一个 Microsoft Access 数据库 其中包含一个包含 Microsoft Word 文档的 OLE 对象字段 我试图找到代码来检索保存在 OLE 对象中的文件 以便用户可以从我的 JavaFx 应用程序中的按钮下载它 但没有
  • 为什么Iterator接口没有add方法

    In IteratorSun 添加了remove 方法来删 除集合中最后访问的元素 为什么没有add方法来向集合中添加新元素 它可能对集合或迭代器产生什么样的副作用 好的 我们开始吧 设计常见问题解答中明确给出了答案 为什么不提供 Iter
  • 如何检测图像是否像素化

    之前有人在 SO 上提出过这样的问题 在Python中检测像素化图像 https stackoverflow com questions 12942365 detecting a pixelated image in python还有关于q
  • 是否可以从 servlet 内部以编程方式设置请求上下文路径?

    这是一个特殊情况 我陷入了处理 企业 网络应用程序的困境 企业应用程序正在调用request getContext 并将其与另一个字符串进行比较 我发现我可以使用 getServletContext getContextPath 获取 se
  • 如何通过注解用try-catch包装方法?

    如果应该在方法调用中忽略异常 则可以编写以下内容 public void addEntryIfPresent String key Dto dto try Map
  • org/codehaus/plexus/archiver/jar/JarArchiver(不支持的major.minor版本49.0)-Maven构建错误

    下午大家 我在尝试构建项目时收到上述错误 我很确定这与使用 Java 1 6 编译的 Maven 最新更新有关 而我们尝试构建的项目是 1 4 项目 在此之前的插件工作没有问题 因此我将以下内容添加到 POM xml 文件中以尝试强制使用现
  • 从直方图计算平均值和百分位数?

    我编写了一个计时器 可以测量任何多线程应用程序中特定代码的性能 在下面的计时器中 它还会在地图中填充花费了 x 毫秒的调用次数 我将使用这张图作为我的直方图的一部分来进行进一步的分析 例如调用花费了这么多毫秒的百分比等等 public st
  • Spring Batch:一个读取器、多个处理器和写入器

    在 Spring 批处理中 我需要将 ItemReader 读取的项目传递给两个不同的处理器和编写器 我想要实现的是 gt ItemProcessor 1 gt ItemWriter 1 ItemReader gt item gt Item
  • Eclipse - 安装新的 JRE (Java SE 8 1.8.0)

    我正在尝试安装 Java 8 到目前为止我所做的 安装最新版本的 Eclipse 下载并安装 Java SE 运行时环境 8http www oracle com technetwork java javase downloads jre8
  • 将数据预加载到 GAE 开发服务器数据存储中的验收测试

    在我的应用程序中 我有一组 DAO 我将它们注入到我的应用程序层中 对于我正在编写的验收测试 我想用数据预加载 dev server 数据存储 因此我在 JUnit 测试中使用相同的 Spring 配置 使用 ContextConfigur
  • 如何从日期中删除毫秒、秒、分钟和小时[重复]

    这个问题在这里已经有答案了 我遇到了一个问题 我想比较两个日期 然而 我只想比较年 月 日 这就是我能想到的 private Date trim Date date Calendar calendar Calendar getInstanc
  • Java - 从 XML 文件读取注释

    我必须从 XML 文件中提取注释 我找不到使用 JDOM 或其他东西来让它们使用的方法 目前我使用 Regex 和 FileReader 但我不认为这是正确的方法 您可以使用 JDOM 之类的东西从 XML 文件中获取注释吗 或者它仅限于元
  • 集成 Spring Webflow 2 和 Apache Tiles [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我最近开始升级一些应用程序以使用 Spring Webflow 2 并且我想利用 Webflow 2
  • 我可以限制分布式应用程序发出的请求吗?

    我的应用程序发出 Web 服务请求 提供商处理的请求有最大速率 因此我需要限制它们 当应用程序在单个服务器上运行时 我曾经在应用程序级别执行此操作 一个对象跟踪到目前为止已发出的请求数量 并在当前请求超出允许的最大负载时等待 现在 我们正在
  • JMS 中的 MessageListener 和 Consumer 有什么区别?

    我是新来的JMS 据我了解Consumers能够从队列 主题中挑选消息 那么为什么你需要一个MessageListener因为Consumers会知道他们什么时候收到消息吗 这样的实际用途是什么MessageListener 编辑 来自Me

随机推荐

  • Subversion Server SSL 证书验证失败:以及其他原因

    我有一个 SVN 系统 运行得很好 但在最近升级后突然停止工作 我的设置 我有一个使用 VisualSVN Server 2 7 4 托管在 Windows 2008 服务器上的存储库 服务器使我能够随意生成自签名证书 根据需要输入我自己的
  • 从一个节点 A 到节点 B 的最大边权

    给定一个连通的无向图N节点 1 NN 1边缘 我们定义一个函数F a b where F a b 等于路径中的最大边权重a to b 我们如何找到总和F a b 对全部a b这样1 lt a b lt N 模 10 9 7 示例图 F a
  • SQL Server 2008 (R2) 的 CRUD SP 生成器

    我正在使用 SQL Server 2008 R2 是否有一个免费的脚本 实用程序可以为我的所有数据库表创建 CRUD SP 我以前有一份 但剧本丢了 Thanks I use SSMS 工具包 http www ssmstoolspack
  • C# 在运行时获取进程输出

    无论如何 是否可以重定向生成进程的标准输出并在发生时捕获它 我所看到的一切都只是在该过程完成后执行 ReadToEnd 我希望能够在打印时获得输出 Edit private void ConvertToMPEG Start the chil
  • Android 内存不足异常

    有什么办法可以处理吗OutOfMemoryException在Android中同时使用大量图片的Bitmap 我尝试了本网站给出的所有解决方案 即 GC Bitmap reset 我只是想知道在堆内存即将满之前是否可以生成警报 这样我就可以
  • ABAP ADT 先决条件?

    在 Eclipse 中建立与本地数据库的连接以开始在 ABAP 中进行开发需要什么 我已经安装了 ABAP 插件 但无法连接到数据库 有什么建议么 ABAP 开发工具 ADT https tools hana ondemand com ab
  • 从 Ada 程序启动可执行文件并读取结果

    I found this https stackoverflow com questions 32663224 why isnt my gnats standout file descriptor working问题和第一个答案包含一些示例
  • 在jqgrid中添加行

    我正在使用 jqGrid 并且它工作正常 我有一个场景 我必须在 jqGrid 中添加一个空白行 而不是弹出窗口来添加行 我该怎么做 您可以使用例如添加行数据 http www trirand com jqgridwiki doku php
  • 用C将客户端输入插入MySQL数据库

    如何编写一个 C 程序来获取 MySQL 服务器的客户端输入 我使用 Fedora 作为我的操作系统 这是我的代码 include
  • 如何判断 ASP.NET 应用程序中的 HTTP 标头何时已发送?

    长话短说 我有一个 ASP NET 应用程序 我正在尝试调试 在某些时候 在非常特殊的情况下 该应用程序将抛出异 常Response Redirect 陈述 Cannot redirect after HTTP headers have b
  • 如何使用 Linq 选择具有一对多关系的所有内容

    我有两张桌子 CREATE TABLE Thing Id int Name nvarchar max CREATE TABLE SubThing Id int Name nvarchar max ThingId int foreign ke
  • Google 地图未完全呈现在页面上?

    我的页面上有一个谷歌地图 其中有一个我自己构建的搜索窗格 可以随意显示和隐藏 假设它的一侧覆盖了地图的 200 个像素 问题是 当我调整地图大小时 窗格重叠的区域不会渲染 即地图由于某种原因不会在那里渲染 看看这个link http www
  • 如何将 .XLS 和 .XLSX 文件转换为 .PDF 格式并将它们返回到 Powershell 中的每个原始子文件夹?

    我目前有一个 powershell 脚本 可以很好地将 Excel 电子表格转换为 PDF 文件 但我的问题是新文件出现在父文件夹中 而不是它们来自的特定子文件夹中 我当前的脚本如下所示 path c users me Documents
  • 在 PostgreSQL 中对 JsonB 数组进行 Sequelize ORM 查询

    如何使用一些匹配条件和逻辑运算 lt et gte等 在 Jsonb 对象数组上 在 PostgreSQL 中使用 Sequelize ORM 表名 calls id direction metaData 1 inbound 2 outbo
  • 使用 Javascript 比较 HTML 中的两个输入数字?

    我正在使用 Notepad 创建一个简单的网页 用户在文本框中输入两个数字 然后按下按钮 当他们按下按钮时 会出现一些信息 告诉他们第一个数字还是第二个数字更大 我有以下代码 但无法得到任何结果 有谁知道出了什么问题吗
  • XML 新版本 - 新功能

    XML 有新版本了吗 如果是的话 它是什么时候发布的 有哪些新功能 目前 基本 XML 规范中的新功能不太可能出现 当然 XML 系列中的其他标准将会继续发展 但 XML 本身非常稳定 该标准有多个 版本 到目前为止为止是第五版 但这些仅仅
  • 如何在编译时推断嵌套 std::vector 的内部类型?

    有一天我问了一个非常类似的问题 https stackoverflow com questions 59490698 how can i get the depth of a multidimensional stdvector at co
  • 将多维数组转换为字符串并返回

    我有一个二维数组 我需要能够将其转换为字符串表示形式并返回数组格式 我想创建一个通用方法来处理任何数组 1d 2d 3d 等 这样我将来就可以重用该方法 解决这个问题的最佳方法是什么 string array new string help
  • 手动添加声明文件 (TypeScript)

    我没有找到 google spreadsheet 的声明文件 因此我尝试自己创建一个 在打字 gt 模块中 我添加了一个名为 google spreadsheet 的新文件夹 并在其中添加了一个名为 index d ts 的新文件 其中包含
  • 更新 Spring 注入的属性文件以包含上次运行时间戳

    我有一个应用程序 它使用 Spring 加载的属性文件 然后将 Properties 实例注入到几个类中 问题是其中一些属性已更新 例如我们有一个要存储在这里的lastRun时间戳 也许有更好的方法来存储这样的东西 欢迎建议 但是我该如何更