簡體   English   中英

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

[英]How to inject RequestScope bean in spring boot wicket application

在我的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 bean時。 我認為這是因為頁面是在@RequestScope創建此bean之前呈現的。 任何想法如何解決此問題?

注入bean Wicket以兩種不同的方式創建代理:

  • 如果bean是接口,則創建標准的java.lang.reflect.Proxy
  • 如果bean是類,則默認使用cglib

不幸的是,如果沒有默認構造函數,cglib無法為類創建代理。 但是,存在第三種方法可以解決該問題。 只需將objenesis添加為項目的依賴項,Wicket將使用它代替cglib。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM