我一直在寻找与我类似的问题,但却无法找到。因此,我希望它不是一个重复的帖子。
那么, 我使用spring集成来搜索我的mongodb中的文档。一旦找到一个,它就会将有效负载发送到另一个方法。 我有一个属性文件,我想在这个查找和发送配置上解析,所以我使用占位符而不是静态值。
这是我的xml:
<int:inbound-channel-adapter id="sendClientMailInboundAdapter"
expression="@repository.findClient()"
channel="sendClientMailChannel"
auto-startup="${send.mail.active:false}">
<int:poller fixed-rate="${send.mail.poller.time:60}" time-unit="SECONDS" max-messages-per-poll="1" />
</int:inbound-channel-adapter>
<int:channel id="sendClientMailChannel" />
<int:service-activator input-channel="sendClientMailChannel" expression="@service.sendClientMail(payload)" />
右。 现在..我有一个加载属性文件的AppConfig类。
@Configuration
@PropertySource("file://${appconfig.root}/appconfig.properties")
public class AppConfig {
public static Environment env;
...
@Bean
public static PropertySourcesPlaceholderConfigurer appConfigConfigurer(Environment env) {
AppConfig.env = env;
PropertySourcesPlaceholderConfigurer appConfigConfigurer = new PropertySourcesPlaceholderConfigurer();
appConfigConfigurer.setIgnoreUnresolvablePlaceholders(true);
appConfigConfigurer.setIgnoreResourceNotFound(true);
return appConfigConfigurer;
}
}
所以..我的问题是默认值。 如果我没有指定默认值,spring会解析占位符。但是,如果它被指定,那么看起来春天会忽略占位符(也许它不会等待它解决)并改为设置默认值!
我可以使用context:property-placeholder location。我已经完成了它并且它有效,但由于我已经在我的配置类上加载了该文件,我宁愿从那里获得弹簧读取属性,所以我不必记得调整两个文件以防属性文件更改其文件夹。
我的问题:在查看默认值之前,有没有办法告诉spring等待占位符解决?
编辑:只是让人们知道..我将xml更改为java配置,使用占位符/默认值,就像之前一样,它完美无缺。
以下是等效代码段:
@InboundChannelAdapter(value = "sendClientMailChannel", autoStartup="${send.mail.active:false}",
poller = @Poller(fixedRate="${send.mail.poller.time.in.millis:60000}", maxMessagesPerPoll="1"))
public Client findClient() {
return repository.findClient();
}
@ServiceActivator(inputChannel="sendClientMailChannel")
public void sendToClient(Client payload) {
service.sendClientMail(payload);
}
@Bean
public DirectChannel sendClientMailChannel() {
return new DirectChannel();
}
注意:我没有必要引用属性文件。