使用 Wicket 无状态页面时 Bean 未正确注入另一个 bean
Bean not properly injected into another bean when using Wicket stateless page
我对 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) 来重现该问题。当页面不是无状态时问题消失(更多信息在启动器的自述文件中)。
问题与使用具体 类 而不是 CGLIB 有问题的接口有关。切换到使用界面或使用 Objenesis 应该可以解决问题。
我已经在邮件列表 (http://markmail.org/message/xggw6ajuxz22rllh) and at Wicket-Spring-Boot issues (https://github.com/MarcGiffing/wicket-spring-boot/issues/98#issuecomment-291606918) 上详细回答了这个问题。
没有什么不好的感觉,但是在所有可能的论坛上发这样的交叉帖子对很多人来说是浪费时间。
让我们专注于一个论坛!
我对 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) 来重现该问题。当页面不是无状态时问题消失(更多信息在启动器的自述文件中)。
问题与使用具体 类 而不是 CGLIB 有问题的接口有关。切换到使用界面或使用 Objenesis 应该可以解决问题。
我已经在邮件列表 (http://markmail.org/message/xggw6ajuxz22rllh) and at Wicket-Spring-Boot issues (https://github.com/MarcGiffing/wicket-spring-boot/issues/98#issuecomment-291606918) 上详细回答了这个问题。
没有什么不好的感觉,但是在所有可能的论坛上发这样的交叉帖子对很多人来说是浪费时间。 让我们专注于一个论坛!