Есть некий интерфейс:
public interface SomeInterface {
@Annotation1
@Annotation2
@Annotation3
String getSomeNewObject(Object obj);
}
В нём благодаря аннотациями уже описана вся логика и нет нужды в реализации сервиса. Как можно сделать @Autowired этого интерфейса и вызывать его в другом сервисе например.
@Service
public class SomeService {
@Autowired
SomeInterface someInterface;
public String doSomething(Object obj) {
String str = someInterface.getSomeNewObject(obj);
return str;
}
}
Если говорить и идти по накатанной программистами дороге, то ответ такой:
Нет. Это невозможно, Spring попытается найти и создать экземпляр с реализацией
(Instance) данного интерфейса, а как нам известно создавать
экземпляры интерфейса или абстрактных классов нельзя.
Но если сойти с ума, то конечно возможно всё, однако данный способ очень нетривиальный и скорее всего если ваш код будет сопровождать психопат знающий где вы живёте, будет не очень приятно.
@Configuration
public class SomeBeanConfig {
@Bean
public SomeInterface publicBean() {
return new SomeInterface() {
};
}
}
Сделайте пустую реализацию ващего интерфейса, поставьте над ней @Component, и инжектайте себе спокойно, так как и хотели, через @Autowired
Продвижение своими сайтами как стратегия роста и независимости