Size: a a a

Spring Framework and more

2020 January 07

РШ

Роман Шершуков in Spring Framework and more
Да ничем))
источник

RS

Rostyslav Shevtsiv in Spring Framework and more
Именно. Более того, DATE в запросе выступает как синтаксический элемент, который может влиять на синтаксическую корректность запроса, в то время как в FUNCTION('DATE') DATE выступает как строковый литерал и никак не влияет на парсинг запроса.
источник
2020 January 08

A

Andrei in Spring Framework and more
Всех с праздниками!) Spring по умолчанию умеет инжектить в листы бины с одинаковым интерфейсом. Например:

@RequiredArgsConstructor
public class Service {
   private final List<Handler> handlers;
}

Я хочу свой бин-лист, чтобы соблюсти в нем порядок. Например:
@Bean
public List<Handler> handlers() {
   return List.of(
           Handler1.class,
 ...            
 HandlerN.class).stream().map(h -> context.getBean(h)).collect(Collectors.toList());
}

Так вот он даже имея объявленный бин такой с листом и таким же имененм, все равно инжектит свой лист с бинами, в том порядке, в каком они проинициализированы. Может есть способ отключить создание листов бинов самостоятельное? Или другой бест практис, который тут может подойти. без оборачивания листа в еще один бин жалательно)
источник

A

Andrei in Spring Framework and more
И да, @Order не подходит - есть общий core и пара приложений, в каждом из которых хочется свой порядок.
источник

RS

Rostyslav Shevtsiv in Spring Framework and more
Andrei
Всех с праздниками!) Spring по умолчанию умеет инжектить в листы бины с одинаковым интерфейсом. Например:

@RequiredArgsConstructor
public class Service {
   private final List<Handler> handlers;
}

Я хочу свой бин-лист, чтобы соблюсти в нем порядок. Например:
@Bean
public List<Handler> handlers() {
   return List.of(
           Handler1.class,
 ...            
 HandlerN.class).stream().map(h -> context.getBean(h)).collect(Collectors.toList());
}

Так вот он даже имея объявленный бин такой с листом и таким же имененм, все равно инжектит свой лист с бинами, в том порядке, в каком они проинициализированы. Может есть способ отключить создание листов бинов самостоятельное? Или другой бест практис, который тут может подойти. без оборачивания листа в еще один бин жалательно)
Вот такой ответ нашел на стеке:
@PostConstruct
public void init() {
   Collections.sort(list,AnnotationAwareOrderComparator.INSTANCE);
}
То есть, в пост-констракт сортировать лист твоих бинов.
источник

RS

Ruslan Stelmachenko in Spring Framework and more
Andrei
Всех с праздниками!) Spring по умолчанию умеет инжектить в листы бины с одинаковым интерфейсом. Например:

@RequiredArgsConstructor
public class Service {
   private final List<Handler> handlers;
}

Я хочу свой бин-лист, чтобы соблюсти в нем порядок. Например:
@Bean
public List<Handler> handlers() {
   return List.of(
           Handler1.class,
 ...            
 HandlerN.class).stream().map(h -> context.getBean(h)).collect(Collectors.toList());
}

Так вот он даже имея объявленный бин такой с листом и таким же имененм, все равно инжектит свой лист с бинами, в том порядке, в каком они проинициализированы. Может есть способ отключить создание листов бинов самостоятельное? Или другой бест практис, который тут может подойти. без оборачивания листа в еще один бин жалательно)
А квалифаер не помогает?
источник

A

Andrei in Spring Framework and more
так у меня лист в core этот, а порядком я хочу управлять в контексте отдельного приложения)
источник

RS

Rostyslav Shevtsiv in Spring Framework and more
Andrei
так у меня лист в core этот, а порядком я хочу управлять в контексте отдельного приложения)
А, понял, сорян. Может, тогда делать этот пост-констракт в каждом приложении отдельно?
источник

A

Andrei in Spring Framework and more
Ruslan Stelmachenko
А квалифаер не помогает?
не помогает, если просто на поле повесить.
источник

A

Andrei in Spring Framework and more
Rostyslav Shevtsiv
А, понял, сорян. Может, тогда делать этот пост-констракт в каждом приложении отдельно?
бин создается в core.
источник

A

Andrei in Spring Framework and more
Andrei
не помогает, если просто на поле повесить.
но если инжект всех полей через конструктор (@RequiredArgsConstructor) заменить на Аutowired и Qualifier, то работает)
источник

RS

Ruslan Stelmachenko in Spring Framework and more
Тогда можно попробовать @Resource
Он инжектит строго по имени бина, а не по типу.
источник

A

Andrei in Spring Framework and more
Ruslan Stelmachenko
Тогда можно попробовать @Resource
Он инжектит строго по имени бина, а не по типу.
да, это тоже скорее всего будет работать, просто не хотелось бы отказываться от @RequiredArgsConstructor и писать @Autowired на 15 полях)
источник

RS

Ruslan Stelmachenko in Spring Framework and more
А, так у вас через конструктор инжект? Так тогда аннотации на полях не имеют смысла
источник

A

Andrei in Spring Framework and more
Ruslan Stelmachenko
А, так у вас через конструктор инжект? Так тогда аннотации на полях не имеют смысла
ага.
источник

RS

Ruslan Stelmachenko in Spring Framework and more
Если инжект через конструктор, то писать аннотации надо на аргументах
источник

АС

Антон Смолин in Spring Framework and more
Переопределить через xml порядок?
источник

A

Andrei in Spring Framework and more
Антон Смолин
Переопределить через xml порядок?
мы очень современные, у нас таких файлов в проекте никогда не было)
источник

RS

Ruslan Stelmachenko in Spring Framework and more
Andrei
да, это тоже скорее всего будет работать, просто не хотелось бы отказываться от @RequiredArgsConstructor и писать @Autowired на 15 полях)
сделайте конструктор вручную, без лобмока.
если нужен квалифаер, то другого способа я не знаю
источник

A

Andrei in Spring Framework and more
Ruslan Stelmachenko
сделайте конструктор вручную, без лобмока.
если нужен квалифаер, то другого способа я не знаю
да, спасибо, тож уже к этому склоняюсь как к меньшему из зол)
источник