Внедрение bean-компонента в конструктор с пользовательской аннотациейJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Внедрение bean-компонента в конструктор с пользовательской аннотацией

Сообщение Anonymous »

Я хотел бы внедрить bean-компонент (назовем его clientStub) в мой сервисный bean-компонент.

Для этого есть два требования :
  • Чтобы создать bean-компонент clientStub, мне нужно получить доступ к аннотации @Client, которая содержит некоторую важную информацию, которая используется для поиска соответствующей конфигурации в свойствах.
  • Он должен поддерживать внедрение на основе конструктора (и внедрение параметров метода @Bean)
Ожидаемое использование:

Код: Выделить всё

@Autowired
public MyService(
@Client("invoice-manager") InvoiceManagerClientStub clientStub,
SomeOtherBean bean1, ...) {
или

Код: Выделить всё

@Bean
MyService myService(
@Client("invoice-manager") InvoiceManagerClientStub clientStub,
SomeOtherBean bean1, ...) {
Поэтому я хотел бы сделать то же самое, что и аннотация @Value, например. получить значение из аннотации к параметру (плюс некоторые внутренние поиски).

К сожалению, обычные BeanFactory, похоже, не знают об этом целевые аннотации.

Рассматриваемые альтернативы

Использование BeanPostProcessor для введите значения в аннотированные поля. Ну, это то, что я сейчас делаю, но мне кажется неправильным иметь неизменяемый класс с одним установщиком для внедрения.

Внедрение его в поле а затем представить его как bean-компонент или вызвать конструктор вручную — еще хуже.

Создание прокси-экземпляра внедренного класса. Это невозможно, поскольку внедренные классы генерируются + окончательные и не являются частью моей библиотеки.

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

Нецели

Перезапись любых основных компонентов. Я хотел бы распространять расширение как библиотеку (на основе Spring-Boot), поэтому следует избегать чрезмерной замены внутренних bean-компонентов Spring.

TLDR

Как мне сообщить Spring, чтобы он разрешил параметр, используя значение моей аннотации (резольвер)?

Подробнее здесь: https://stackoverflow.com/questions/603 ... annotation
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»