【问题标题】:Bean not properly injected into another bean when using Wicket stateless page使用 Wicket 无状态页面时 Bean 未正确注入另一个 bean
【发布时间】:2017-04-04 16:26:22
【问题描述】:

wicket-spring-boot wicket 集成有问题。使用 @Service 注释的 Bean 未正确注入到使用 @SpringBean 注释注入到无状态 Page 的支持 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);
    }

}

检票口 7.6.0,检票口弹簧靴 1.0.6。

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

【问题讨论】:

    标签: java spring spring-boot wicket


    【解决方案1】:

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

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

    没有难过的感觉,但在所有可能的论坛上的这种交叉帖子浪费了很多人的时间。 让我们专注于一个论坛!

    【讨论】:

    • @Kukeltje 你看不懂吗?!甚至 OP 也同意在 N 个论坛中提出相同的问题并不是消磨时间的最佳方式。随意删除我的答案和问题。并找到更好的事情做而不是打扰我们!
    • 我可以完美阅读(荷兰语、德语、法语、英语甚至一点西班牙语)而且我也同意重复的帖子不好,但 Stackoverflow 中的仅链接答案也不是。 stackoverflow.com/help/how-to-answer(“提供上下文”部分),未提供完全重复的答案(未在任何地方说明)
    猜你喜欢
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多