@buster
Когда речь идет о работе с интерфейсами в Spring, есть несколько подходов:
Например:
1 2 |
@Autowired private SomeInterface someInterfaceImpl; |
Например:
1 2 3 |
@Autowired @Qualifier("someImplementation") private SomeInterface someInterfaceImpl; |
1 2 3 4 5 6 7 8 |
@Configuration public class AppConfig { @Bean public SomeInterface someInterfaceImpl() { return new SomeInterfaceImpl(); } } |
Затем вы можете использовать аннотацию @Autowired при инъекции интерфейса:
1 2 |
@Autowired private SomeInterface someInterfaceImpl; |
1
|
<bean id="someInterfaceImpl" class="com.example.SomeInterfaceImpl" /> |
Затем, вы можете использовать тег для провязывания бина с интерфейсом:
1 2 3 |
<bean id="someBean" class="com.example.SomeBean"> <property name="someInterfaceImpl" ref="someInterfaceImpl" /> </bean> |
Однако, рекомендуется избегать использования XML-конфигурации в новых проектах, так как Java-конфигурация является более предпочтительным подходом.
Независимо от выбранного подхода, важно убедиться, что нужная реализация интерфейса зарегистрирована как бин в контексте Spring. Это можно сделать с помощью аннотаций @Component, @Service, @Repository или с использованием XML-конфигурации.