gpt4 book ai didi

java - 如何将 xml 配置 bean 转换为 Java 配置 bean?

转载 作者:行者123 更新时间:2023-12-01 09:23:02 43 4
gpt4 key购买 nike

我正在使用 Quartz 和 Spring 框架重写一个遗留项目。原始配置是 XML 格式,现在我将其转换为 Java Config。 xml 配置使用 jobDetail 设置触发器 bean 的作业详细信息属性。但是,当我尝试使用等效方法(即 setter:setJobDetails(simpleJobDetail))时,我收到一条警告,指出该 setter 没有正确的类型(期望 JobDetails,但得到 MethodInvokingJobDetailFactoryBean)。

我可以知道使用 Java COnfig 中的等效命名 setter 将 xml bean 配置转换为 Java COnfig 是否正确?
为什么在 XML 属性设置中,触发器 bean 可以将其 jobDetail 属性设置为 simpleJobDetail bean(其类型为 MethodInvokingJobDetailFactoryBean),而 Java Config 却不能?

XML 配置:

<!-- For times when you just need to invoke a method on a specific object -->
<bean id="simpleJobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="reader" />
<property name="targetMethod" value="readData" />
</bean>

<!-- Run the job every 60 seconds with initial delay of 1 second -->
<bean id="trigger"
class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
<property name="jobDetail" ref="simpleJobDetail" />
<property name="repeatInterval" value="600000" />
</bean>

Java 配置:

    @Bean
public MethodInvokingJobDetailFactoryBean simpleJobDetail() {
MethodInvokingJobDetailFactoryBean simpleJobDetail = new MethodInvokingJobDetailFactoryBean();
simpleJobDetail.setTargetObject(reader());
simpleJobDetail.setTargetMethod("readData");
return simpleJobDetail;
}



@Bean
private Object reader() {
// TODO: 10/13/2016
return null;
}

@Bean
public SimpleTriggerFactoryBean trigger() {
final SimpleTriggerFactoryBean trigger = new SimpleTriggerFactoryBean();
trigger.setJobDetail( simpleJobDetail()); // got warning about wrong type
trigger.setRepeatInterval(60000);
return trigger;
}

最佳答案

请注意 simpleJobDetail() 返回一个工厂,而不是 bean 本身。您可以依靠 Autowiring 来注入(inject)使用此工厂构建的 JobDetail。

@Bean
public SimpleTriggerFactoryBean trigger(final JobDetail simpleJobDetail) {
final SimpleTriggerFactoryBean trigger = new SimpleTriggerFactoryBean();
trigger.setJobDetail(simpleJobDetail); // got warning about wrong type
trigger.setRepeatInterval(60000);
return trigger;
}

希望有帮助。

关于java - 如何将 xml 配置 bean 转换为 Java 配置 bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40032064/

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