Круговая зависимость Wicket WebApplication / WebPage с использованием Spring - PullRequest
0 голосов
/ 22 апреля 2011

В моих приложениях, основанных на пружинах калитки, у меня есть этот метод для добавления диспетчера пружин в класс WebApplication:

private void initManager() {
    ApplicationContext applicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());
    this.manager = (MyManager) applicationContext.getBean("manager");
}

Я обычно настраиваю страницу внутренней ошибки внутри метода initWebApplication класс.Иногда я также монтирую несколько закладок:

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.Это круговая зависимость?Если да, как я могу избежать этого?

1 Ответ

1 голос
/ 22 апреля 2011

Я бы сказал, что это не циклическая зависимость, а конфигурация.

Однако я думаю, что вы всегда можете внедрить bean-компонент manager в класс веб-страницы с помощью autowiring.

EDIT:

Вам также может понадобиться включить аннотации пружин в applicationContext.xml, а также добавить некоторые новые зависимости, если они еще не указаны в classpath

, см. Пример applicationContext.xml по этому адресу, и вы будете очень похожи, за исключением имени пакета сканирования.Обновите эти значения соответственно.

public class ErrorPage extends WebPage {

@Autowired
private MyManager myManager;

//setter getter methods as well
}
...