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

在我的 Wicket 页面中,我有:


@SpringBean

protected J2EContext j2EContext;

在配置中我有:


@Bean

@RequestScope

public J2EContext getWebContext() {

    return new J2EContext(request, response, getSessionStore());

}



@Bean

public 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 之前正在渲染。知道如何解决这个问题吗?


函数式编程
浏览 94回答 1
1回答

守候你守候我

注入 bean Wicket 以两种不同的方式创建代理:如果 bean 是一个接口,则创建一个标准 java.lang.reflect.Proxy如果 bean 是一个类,默认使用 cglib不幸的是,cglib 不能为没有默认构造函数的类创建代理。然而,还有第三种方法可以解决这个问题。只需将 objenesis 作为依赖项添加到您的项目中,Wicket 就会使用它而不是 cglib。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java