Я пытаюсь создать http-клиент на лету из аннотаций jaxrs, предоставленных в интерфейсе для каждого API.
public @interface RestClient {
String baseUrlKey();
}
@Component
@RestClient(baseUrlKey="NOTIFICATION")
@Path("/notification/")
public interface NotificationClient {
@Path("/")
@POST
@Produces("application/json")
@Consumes("application/json")
public abstract NotificationResponse create(NotificationEntry entry);
}
Теперь я пытаюсь написать другой класс, который пытается найти все интерфейсы, аннотированные @RestClient.Я не могу найти какое-либо решение для этого.Кажется, что все методы контекста приложения возвращают классы, которые могут быть созданы.Можно ли как-нибудь загрузить этот интерфейс и создать экземпляр bean-компонента apache http-клиента на лету и зарегистрироваться в контексте приложения.
Вот класс инициализатора бина -
public class RestClientBeanProcessor {
private static final Logger LOGGER = LoggerFactory.getLogger(RestClientBeanProcessor.class);
@Autowired
RestTemplate restTemplate;
@Autowired
ApplicationContext applicationContext;
@PostConstruct
private void registerClientBeans() {
Map<String, Object> beans = applicationContext.getBeansWithAnnotation(RestClient.class);
LOGGER.info("Registering client beans for - " + beans);
}
}
Мой объект бобов пуст.Spring не может сказать мне список интерфейсов, которые запрашивает мой запрос.