Как использовать полиморфизм в spring?

Пользователь

от lilla.herman , в категории: Java , 2 месяца назад

Как использовать полиморфизм в spring?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от delphine_bartoletti , 23 дня назад

@lilla.herman 

В Spring полиморфизм можно использовать следующими способами:

  1. Внедрение зависимостей через интерфейсы: Создайте интерфейс и несколько реализаций этого интерфейса. Затем используйте аннотацию @Autowired для автоматической инъекции зависимости на основе типа интерфейса. public interface MyService { void doSomething(); } @Service public class MyServiceImplA implements MyService { public void doSomething() { // реализация для A } } @Service public class MyServiceImplB implements MyService { public void doSomething() { // реализация для B } } @Controller public class MyController { private final MyService service; @Autowired public MyController(MyService service) { this.service = service; } // работа с сервисом } Если несколько реализаций интерфейса, Spring выберет подходящего по типу или аннотации (@Primary, @Qualifier) бина.
  2. Использование абстрактного класса: Создайте абстрактный класс и несколько его наследников. Определите методы с общей логикой в абстрактном классе, а специфическую логику в наследниках. public abstract class MyBaseService { public void commonMethod() { // общая логика } public abstract void doSomething(); } @Service public class MyServiceImplA extends MyBaseService { public void doSomething() { // реализация для A } } @Service public class MyServiceImplB extends MyBaseService { public void doSomething() { // реализация для B } } @Controller public class MyController { private final MyBaseService service; @Autowired public MyController(MyBaseService service) { this.service = service; } // работа с сервисом } Выбирается конкретный наследник абстрактного класса на основе типа или аннотации бина.


Это два базовых способа использования полиморфизма в Spring. В обоих случаях вы можете менять реализацию сервиса, не затрагивая код потребителей.