使用Wicket无状态页面时,Bean未正确注入另一个bean

时间:2017-04-04 16:26:22

标签: java spring spring-boot wicket

我遇到wicket-spring-boot< - >的问题wicket整合。注释为@Service的Bean未正确注入使用@SpringBean注释注入无状态页面的辅助bean。

一般而言:

@StatelessComponent
@MountPath("home-page")
public class HomePage extends WebPage {

    @SpringBean
    private HomePageHandler handler;
}

@Service
public class HomePageHandler {

    private final CommandPublisher commandPublisher;

    @Autowired
    public HomePageHandler(CommandPublisher commandPublisher) {
        this.commandPublisher = commandPublisher;
    }

    public void executeAction(String name) {
        commandPublisher.publish(name); /// <----------- NPE (commandPublisher is null)
    }
}

和:

@Service
public class CommandPublisher {

    public void publish(String text) {
        eventPublisher.publishEvent(text);
    }

}

Wicket 7.6.0,wicket-spring-boot 1.0.6。

我创建了一个简单的启动器(https://github.com/tdziurko/wicket-spring-bean-issue)来重现问题。当页面不是无状态时问题消失(启动器中自述文件中的更多信息)。

1 个答案:

答案 0 :(得分:1)

问题与使用具体类而不是CGLIB有问题的接口有关。切换到使用界面或使用Objenesis应该可以解决问题。

我已在邮件列表(http://markmail.org/message/xggw6ajuxz22rllh)和Wicket-Spring-Boot问题(https://github.com/MarcGiffing/wicket-spring-boot/issues/98#issuecomment-291606918)中详细回答了这个问题。

没有任何难过的感觉,但所有可能的论坛中的这些交叉帖子都会浪费时间给很多人。 让我们专注于一个论坛!