在基于wicket弹簧的应用程序中,我可以使用以下方法将弹簧管理器注入到WebApplication
类:
private void initManager() {
ApplicationContext applicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());
this.manager = (MyManager) applicationContext.getBean("manager");
}
我通常在
init
类的WebApplication
方法内设置内部错误页面。有时我还会挂载一些可收藏的页面:public class MyApplication extends WebApplication {
@Override
protected void init() {
IApplicationSettings applicationSettings = getApplicationSettings();
applicationSettings.setInternalErrorPage(ErrorPage.class);
mountBookmarkablePage("privacy", PrivacyPage.class);
}
//............
}
我的
WebPage
类通常取决于我的经理类,例如:public class ErrorPage extends WebPage {
public ErrorPage() {
MyApplication application = (MyApplication) getApplication();
add(new EmailLink(application.getManager().getMailSupport()));
}
}
因此,我的
WebApplication
类引用一个或多个页面,而我的页面引用WebApplication
类。这是循环依赖吗?如果可以,我该如何避免呢? 最佳答案
我会说这不是循环依赖,而是配置。
但是,我认为您总是可以通过自动装配将经理bean注入到网页类中。
编辑:
您可能还需要在applicationContext.xml中启用spring注释,并在classpath中添加一些新的依赖项
参见applicationContext.xml示例at this address,除了扫描包名称外,您将非常相似。相应地更新这些值。
public class ErrorPage extends WebPage {
@Autowired
private MyManager myManager;
//setter getter methods as well
}