java - 使用@SpringBean 将 ApplicationContext 注入(inject) Wicket 组件失败

标签 java spring wicket applicationcontext

我有一个使用 Wicket 的 Spring 项目。我可以使用 @SpringBean 注释成功地将服务注入(inject) Wicket 组件。

现在,我想访问 Spring Application Context。所以我声明了一个 ApplicationContext 类型的成员变量,并用 @SpringBean 注释它,就像其他服务一样:

尝试使用@SpringBean注入(inject)应用

public class MyPanel extends Panel {

    @SpringBean
    private ApplicationContext applicationContext;

    ...
}

然而,在运行时,这给出了错误

bean of type [org.springframework.context.ApplicationContext] not found

难道不能将 ApplicationContext 注入(inject)到 Wicket 组件中吗?如果是这样,什么是访问 ApplicationContext 的合适方法?

最佳答案

ApplicationContext 应该可以在您的应用程序类中访问。

ApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(servletContext);

在您的应用程序类中创建一个 getApplicationContext 方法。

public class MyApplication extends WebApplication {

    public ApplicationContext getAppCtx() {
        return WebApplicationContextUtils.getWebApplicationContext(servletContext);
    }

}

可以从任何 wicket 组件访问应用程序对象。

public class MyPanel extends Panel {

    public MyPanel(String id) {
        ...
        ApplicationContext appCtx = ((MyApplication) getApplication()).getAppCtx();
        ...
    } 
}   

关于java - 使用@SpringBean 将 ApplicationContext 注入(inject) Wicket 组件失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9823225/

相关文章:

java - 如何从 junit-tests 中的 .properties 文件读取字符串?

javascript - Wicket Ajax 错误日志 : ERROR: Cannot bind a listener for event "click" on element "AjaxCheckBox" because the element is not in the DOM

java - 检查是否所有枚举值都已映射?

java - JPA QueryDSL 存在并计数

spring - AuthenticationManager/角色

java - 如何将 JNDI 名称动态插入 Spring

java - MySQLIntegrityConstraintViolationException : column "question_id" cannot be null error

java - 芬兰日期本地化错误?

java - 检查字符串包含数组列表中的属性

java - 两个模块之间的maven通信(网络)