首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@Configuration未被加载

@Configuration未被加载
EN

Stack Overflow用户
提问于 2015-02-01 07:57:22
回答 1查看 979关注 0票数 0

我有一个@Configuration bean,它在Java中定义了各种bean

代码语言:javascript
复制
@Configuration
public class jmsConfiguration {
   // Various @Bean definitions
}

我也有一个折叠式豆子:

代码语言:javascript
复制
@Component
@Profile({"BATCH_MODE"})
public class BatchLauncher  {

    @Autowired
    private Launcher launcher;

    @PostConstruct
    public void init(){
       launcher.launch();
       // The launcher bean encapsulates the logic to
       // get the Spring Batch JobLauncher bean,
       // build the job parameters and start the job
    }
}

问题是:在初始化init()类之前调用init()方法,该方法获取Launcher bean并启动批处理作业。如果代码launcher.launch()被注释掉,应用程序在调试中运行,调试器将在构造各种@Bean的代码中停止。但是,当launcher.launch()存在并运行时,该代码将首先运行,这意味着ItemWriter所依赖的been没有被正确初始化。

这是用于启动Spring上下文的代码:

代码语言:javascript
复制
GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();
ctx.load("app-context.xml");
ctx.getEnvironment().getPropertySources().addLast(propertySource);
ctx.refresh();
ctx.start();

在XML中如何定义Launcher bean:

代码语言:javascript
复制
<context:component-scan base-package="com.company.app" />
<beans>
       <bean id="launcher" class="com.company.Launcher" />
...
</beans>

解决这个问题的最好方法是什么?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2015-02-01 13:47:15

您可以使用BatchLauncher类上的BatchLauncher注释来定义类所依赖的bean(如果它们不是作为构造函数参数或自动设置的字段)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28260679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档