2016-03-24 4 views
2

Является ли хорошей практикой вызывать класс @controller из класса @service?Вызов другого контроллера из класса обслуживания весной

В настоящее время я непосредственно вызываю контроллер с другого контроллера (Spring Boot Project), я планирую внедрить слой службы поддержки.

Пожалуйста, дайте мне знать

+0

* Почему вы звоните другому контроллеру? Обычно это просто указывает на основную проблему моделирования OO. – chrylis

ответ

2

Я бы не назвал контроллер из сервисного слоя непосредственно. Вы можете получить круговые зависимости.

Я использовал бы observer pattern через инъекцию зависимости. Когда контроллер реализует интерфейс, вы можете его авторизовать в свою службу.

public interface Observer { 

    void eventHappened(); 

} 

@Controller 
public class YourController implements Observer { 

} 

@Service 
public class YourService { 

    @Autowired 
    private Observer o; 

    // call o.eventHappened() somewhere in your code 
} 

Если ваш контроллер также имеет ссылку на ваш сервис, вам может понадобиться использовать InitializingBean, которые вы можете использовать для регистрации наблюдателя.

+0

Спасибо за сообщение, но я пропустил упоминание здесь. Я говорю о 2 разных контроллерах. Контроллер A вызывает класс обслуживания. Вызовы класса обслуживания Контроллер B – JavaC

+0

Вы можете применить тот же шаблон. – Schrieveslaach

+0

Спасибо! Будут пытаться реализовать то же самое – JavaC

Смежные вопросы