Spring没有注册@ManagedBean

时间:2014-03-30 21:15:20

标签: java spring jetty wicket

我正在考虑使用 wicket 构建一个Web应用程序,在 jetty 服务器上运行,并希望使用 spring 作为IoC框架。为了测试这个设置,我制作了一个小型的网络应用我正在做一个组件扫描以查找我的bean。测试应用程序只有一个这样的bean,用 @ManagedBean 注释。这个bean的一个实例被注入一个wicket WebPage。

问题在于,这适用于我的开发机器,使用嵌入式jetty,但不能在我的生产机器上运行jetty作为服务。

我已将问题跟踪到 ClassPathScanningCandidateComponentProvider.registerDefaultFilters()

在我的开发机器上,过滤器已注册:

  • org.springframework.stereotype.Component
  • javax.inject.Named
  • javax.annotation.ManagedBean

我的生产机器只提供前两个,缺少我的@ManagedBean注释。

首先我想也许我正在使用不同版本的ClassPathScanningCandidateComponentProvider,但是,使用 -verbose:class ,显示它只从spring-context-4.0.2.RELEASE加载一次。广口瓶中。

作为一种解决方法,我可以使用 @Component而不是@ManagedBean 来注释我的bean,但是仍然想知道为什么没有注册ManagedBean过滤器。

即使详细的类加载似乎暗示我仍然怀疑我在我的两台机器上使用不同的版本。

如果有人能指出我解决这个问题的方向,那将会非常令人沮丧。

提前致谢。

我的网页如下:

public class HomePage extends WebPage {
private static final long serialVersionUID = 1L;

@SpringBean
private SpringTestClass test;

public HomePage(final PageParameters parameters) {
..

我的bean注释如下:

@ManagedBean
public class SpringTestClass {

我正在使用:

  • Jetty 9
  • Spring 4.0.2
  • Wicket 6.0

0 个答案:

没有答案