03
Май
2020

Как обеспечить доступ к бинам для классов, не являющихся точкой входа в приложение (и бинами)?

Из ответов на вопрос Как убрать приведение типа из конструкции фреймворка Spring applicationContext.getBean? я узнал, что для соблюдения инверсии контроля использовать applicationContext можно только в конфигурационных классах Spring, а также в точке входа, например:

public class EntryPoint {
    public static void main (String[] args) {
        ApplicationContext applicationContext = new AnnotationConfigApplicationContext(ApplicationContext.class);
        FilesManager filesManager = applicationContext.getBean(FilesManager.class);
        PeopleGateway peopleGateway = applicationContext.getBean(PeopleGateway.class);

        filesManager.initializeUserFiles();
        GUI_Service.startGUI();
    }
}

Каким же образом принято обеспечивать доступ к бинам из всех остальных классов? Например, в данном приложении GUI_Service будет вызывать у peopleGateway разные методы - getAllPeolple, getPersonByID и так далее. К контексту GUI_Service обращаться вроде как не должен. А в точке входа peopleGateway пока что и вовсе не нужен.

Обычный способ - передать peopleGateway либо через конструктор GUI_Service, либо через какой-нибудь инициализирующий метод. Что даёт Spring?

GUI_Service на данный момент пока не является бином.

Источник: https://ru.stackoverflow.com/questions/1119491/%D0%9A%D0%B0%D0%BA-%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B8%D1%82%D1%8C-%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF-%D0%BA-%D0%B1%D0%B8%D0%BD%D0%B0%D0%BC-%D0%B4%D0%BB%D1%8F-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%BE%D0%B2-%D0%BD%D0%B5-%D1%8F%D0%B2%D0%BB%D1%8F%D1%8E%D1%89%D0%B8%D1%85%D1%81%D1%8F-%D1%82%D0%BE%D1%87%D0%BA%D0%BE%D0%B9-%D0%B2%D1%85%D0%BE%D0%B4%D0%B0-%D0%B2-%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD

Тебе может это понравится...

Добавить комментарий