Чтение аннотаций, определенных на интерфейсах, и создание классов бинов с использованием значений аннотаций - PullRequest
0 голосов
/ 30 декабря 2018

Я пытаюсь создать 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 не может сказать мне список интерфейсов, которые запрашивает мой запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...