gpt4 book ai didi

java - 在 Spring 中配置系统属性

转载 作者:行者123 更新时间:2023-12-01 15:43:08 29 4
gpt4 key购买 nike

我有文件 channel 适配器,需要以指定的时间间隔监听目录。我有以下代码。

<file:inbound-channel-adapter id="fileAdapter"
directory="file:${SYS.com.abc.wls.workdir}/finalize/" queue-size="1000"
auto-startup="true" filename-pattern="*.txt">
<int:poller fixed-delay="500">

</int:poller>
</file:inbound-channel-adapter>

当我用真实的目录名称替换 directory="file:${SYS.com.abc.wls.workdir}/finalize/ 时(如 directory="file:C:/temp/finalize/)一切正常。但是启动服务器时正在设置系统属性,但spring没有检测到系统属性。

你能帮忙吗?

更新:

我有以下占位符配置

<beans:bean id="jobProperties"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<beans:property name="properties">
<beans:value>
job.group.commit.interval=5000
</beans:value>
</beans:property>
<beans:property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_FALLBACK" />
<beans:property name="ignoreUnresolvablePlaceholders"
value="true" />
<beans:property name="order" value="1" />
</beans:bean>

directory="file:${SYS.com.abc.wls.workdir}/finalize/" 中删除了:file: 并更改为 auto -create-directory="false" 现在我正在处理异常,如下所示,

    by: java.lang.IllegalArgumentException: Source directory **[${SYS.com.abc.wls.workdir}\finalize] does not exist**.
at org.springframework.util.Assert.isTrue(Assert.java:65)
at org.springframework.integration.file.FileReadingMessageSource.onInit(FileReadingMessageSource.java:233)
at org.springframework.integration.context.IntegrationObjectSupport.afterPropertiesSet(IntegrationObjectSupport.java:98)
at org.springframework.integration.file.config.FileReadingMessageSourceFactoryBean.initSource(FileReadingMessageSourceFactoryBean.java:153)
at org.springframework.integration.file.config.FileReadingMessageSourceFactoryBean.getObject(FileReadingMessageSourceFactoryBean.java:99)
at org.springframework.integration.file.config.FileReadingMessageSourceFactoryBean.getObject(FileReadingMessageSourceFactoryBean.java:37)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport$2.run(FactoryBeanRegistrySupport.java:133)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:131)
... 63 more

最佳答案

您需要声明一个识别系统属性的 spring 实体。典型的方法是输入 PropertyPlaceHolderConfigurer在你的 Spring 配置中。

默认模式为SYSTEM_PROPERTIES_MODE_FALLBACK,这意味着配置器未保存的值将作为系统属性进行查找。可以使用 setSystemPropertiesMode 覆盖该模式.

关于java - 在 Spring 中配置系统属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7671871/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com