Избегание дублирования классов Spring Bean, которые просто имеют разные аннотации @Value на уровне поля.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Избегание дублирования классов Spring Bean, которые просто имеют разные аннотации @Value на уровне поля.

Сообщение Anonymous »

Предположим, что у меня есть два класса, которые отличаются только «значениями» @Value в своих полях. Например:

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

@Component
public class BlueWidget {
@Value("${blue.message}")
private String message;

public String getMessage() {
return message;
}
}
И...

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

@Component
public class RedWidget {
@Value("${red.message}")
private String message;

public String getMessage() {
return message;
}
}
Это кажется пустой тратой времени, но препятствием, которое я не могу преодолеть, является аннотация @Value. Что я считаю возможным, так это сделать что-то вроде следующего, где у меня просто есть один класс Widget, который может принимать "имя" или что-то в этом роде, а затем действовать так, как будто у него есть @Value("${.message}") в поле сообщения. Тогда подключение этих bean-компонентов может выглядеть так:

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

@Configuration
public class WidgetConfiguration {
@Bean
Widget redWidget() {
return new Widget("red");
}

@Bean
Widget blueWidget() {
return new Widget("blue");
}
}
Или, может быть, будет какой-нибудь WidgetFactory или конструктор, или что-то в этом роде. Однако я не знаю, как будет выглядеть этот более абстрактный виджет.
Кодовая база, в которой я провожу большую часть своей повседневной работы, завалена такими вещами: множество вариаций класса со многими, многими полями, которые различаются только аннотациями @Value.
Я немного поигрался с отражением, однако, даже если бы я мог изменить «значение» @Value аннотация (двойное "значение" меня всегда беспокоило...), я думаю, что в конечном итоге я бы изменил это для каждого экземпляра класса, тогда как я хочу добиться чего-то вроде того, чтобы каждый экземпляр класса имел разные значения @Value.
Складка экземпляров, которые все еще ведут себя как если бы у них была аннотация @Value, важна в моем случае использования, поскольку есть и другие вещи, которые ищут эту аннотацию, но, возможно, ответ заключается в том, чтобы в конечном итоге еще раз взглянуть и на эти вещи. Однако это кажется чем-то достижимым. Есть мысли?

Подробнее здесь: https://stackoverflow.com/questions/798 ... ld-level-v
Ответить

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

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

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

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

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