为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Spring Boot wicket 应用程序中注入 RequestScope bean

如何在 Spring Boot wicket 应用程序中注入 RequestScope bean

函数式编程 2022-07-20 10:14:20
在我的 Wicket 页面中,我有:@SpringBeanprotected J2EContext j2EContext;在配置中我有:@Bean@RequestScopepublic J2EContext getWebContext() {    return new J2EContext(request, response, getSessionStore());}@Beanpublic RequestContextListener requestContextListener() {    return new RequestContextListener();}应用程序启动正常,但是当我转到主页时出现异常:Caused by: java.lang.IllegalArgumentException: Superclass has no null constructors but no arguments were given    at net.sf.cglib.proxy.Enhancer.emitConstructors(Enhancer.java:931)    at net.sf.cglib.proxy.Enhancer.generateClass(Enhancer.java:631)    at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)    at net.sf.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:329)    at net.sf.cglib.proxy.Enhancer.generate(Enhancer.java:492)    at net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:93)    at net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:91)    at net.sf.cglib.core.internal.LoadingCache$2.call(LoadingCache.java:54)    at java.util.concurrent.FutureTask.run(FutureTask.java:266)当检票口要注入J2EContext豆子时。我认为这是因为页面在@RequestScope创建此 bean 之前正在渲染。知道如何解决这个问题吗?
查看完整描述

1 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

注入 bean Wicket 以两种不同的方式创建代理:

  • 如果 bean 是一个接口,则创建一个标准 java.lang.reflect.Proxy

  • 如果 bean 是一个类,默认使用 cglib

不幸的是,cglib 不能为没有默认构造函数的类创建代理。然而,还有第三种方法可以解决这个问题。只需将 objenesis 作为依赖项添加到您的项目中,Wicket 就会使用它而不是 cglib。


查看完整回答
反对 回复 2022-07-20
  • 1 回答
  • 0 关注
  • 92 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信