当前位置: 首页 > 知识库问答 >
问题:

如何翻译xml配置beanJava配置bean?

裴硕
2023-03-14

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


为什么在XML属性设置中,触发器bean可以将它的jobDetail属性设置为simpleJobDetail bean(其类型为Method odInvokingJobDetailFactoryBean),而JavaConfig不能?

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;
}

共有1个答案

严元白
2023-03-14

请注意,simpleJobDetail()返回工厂,而不是bean本身。您可以依靠自动连线来注入使用此工厂构建的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;
}

希望有帮助。

 类似资料:
  • 我怎么能改变这个xml配置: 到目前为止的java代码配置我有这个我只有这部分的问题: 这就是我到目前为止在java代码中所拥有的: 这一行给我这个错误:

  • 主要内容:把日志输出到文件,把日志输出到控制台和文件Log4J支持两种文件格式的配置,一种是log4j.properties,一种是log4j.xml。在本节中,我们将看到如何使用 XML 配置 log4j。 在“Log4j 入门案例”中,我们解释了如何使用properties属性文件配置 log4j。在这里,除了我们使用 XML 配置文件之外,一切都保持不变。 以下代码显示了对应的 log4j.xml 文件: 要使用 xml 文件配置 log4j

  • 每个Spring Data模块都包含一个repository元素,通过这个元素开发者可以轻松的定义spring扫描包的路径。 Example 11.Enabling Spring Data repositories via XML <?xml version="1.0" encoding="UTF-8"?> <beans:beans xmlns:beans="http://www.springfr

  • 我试图将以下Spring任务xml配置转换为纯粹基于代码/注释的版本: 根据Spring规范28.4.1(http://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html),他们说,从XML开始: 编写代码配置就像启用@EnableScheduling和/或@EnableSync一样简

  • 问题内容: 在最近我从事的一些大型项目中,选择其中一种(XML或注释)似乎变得越来越重要。随着项目的发展,一致性对于可维护性非常重要。 我的问题是:与基于注释的配置相比,基于XML的配置有哪些优势?与基于XML的配置相比,基于注释的配置有哪些优势? 问题答案: 注释有其用途,但它们不是杀死XML配置的灵丹妙药。我建议将两者混合! 例如,如果使用Spring,则将XML用于应用程序的依赖注入部分是完

  • 问题内容: 我正在尝试将以下Spring任务xml配置转换为纯粹基于代码/注释的版本: 根据Spring规范28.4.1(http://docs.spring.io/spring/docs/current/spring-framework- reference/html/scheduling.html ),他们说要像这样从XML中获取: 代码配置就像启用@EnableScheduling和/或@E