我写了一份cron工作:
@Scheduled(cron="${process.virtual.account.start}")
public void ecomProcessVirAccOrderPaymentsScheduler() {
LOGGER.info("Start --->" + this.getClass().getCanonicalName() + ".ecomProcessVirAccOrderPaymentsScheduler() Method");
schedulerJobHelper.ecomProcessVirAccOrderPaymentsScheduler();
LOGGER.info("End --->" + this.getClass().getCanonicalName() + ".ecomProcessVirAccOrderPaymentsScheduler() Method");
}
我想从外部属性文件中填充与@Scheduled
注释一起使用的cron属性。目前我从应用程序范围内的属性文件中获取它。
我可以获取值,但无法将其与@Schedule
注释一起使用。
答案 0 :(得分:15)
您使用的是哪个版本的spring框架?如果它小于3.0.1,则不起作用。
Bug Report here in Spring 3.0.0并已在3.0.1中修复。
因此,如果您使用的是Spring 3.0.1或更高版本,那么请遵循cron表达式中必须执行的操作
的条目
<bean id="placeholderConfig"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:ApplicationProps.properties</value>
</list>
</property>
</bean>
之后使用@Scheduled方法,如
@Scheduled(cron="${instructionSchedularTime}")
public void load(){
}
注意:fixedDelay和fixedRate不能从palceholder获取属性值,因为它们需要很长的值。 Cron属性将参数作为String,因此您可以使用占位符。
答案 1 :(得分:1)
尝试类似
@Configuration
@PropertySource("/path/to/file")
public class LoadPropertiesFile{
//Other project configurations
}
有关更多信息,请在click这里
答案 2 :(得分:1)
它在Spring Boot中工作。
@Scheduled(cron="${cronExpression}")
private void testSchedule() {
System.out.println("Helloooo");
}
在application.properties中,我具有如下所示的属性
cronExpression = * * *吗? * *
答案 3 :(得分:0)
您可以直接从属性文件分配值,我正在使用Spring Boot BTW
@Scheduled(cron = "${com.oracle.fusion.cron}")
public void getInvoiceInterfaceHeader() {
}
答案 4 :(得分:0)
对我来说是这样的:
final EmojiPopup emojiPopup = EmojiPopup.Builder.fromRootView(rootView).build(emojiEditText);
emojiPopup.toggle(); // Toggles visibility of the Popup.
emojiPopup.dismiss(); // Dismisses the Popup.
emojiPopup.isShowing(); // Returns true when Popup is showing.