Возможно ли установить порядок экземпляра в Spring?Проигрывать бобы по очереди весной?
Я не хочу использовать @DependsOn
, и я не хочу использовать интерфейс Ordered
. Мне просто нужен порядок инстанцирования.
Следующее использование @Order
аннотацию не работает:
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
/**
* Order does not work here
*/
public class OrderingOfInstantiation {
public static class MyBean1 {{
System.out.println(getClass().getSimpleName());
}}
public static class MyBean2 {{
System.out.println(getClass().getSimpleName());
}}
@Configuration
public static class Config {
@Bean
@Order(2)
public MyBean1 bean1() {
return new MyBean1();
}
@Bean
@Order(1)
public MyBean2 bean2() {
return new MyBean2();
}
}
public static void main(String[] args) {
new AnnotationConfigApplicationContext(Config.class);
}
}
Фасоль по-прежнему конкретизируется в лексикографическом порядке.
Почему это не работает?
Могу ли я полагаться на лексикографический заказ в любом случае?
UPDATE
Я хотел бы любое решение, позволяющее обеспечить порядок создания.
Целью является заполнение коллекций на уровне конфигурации в правильном порядке. Depends on
- не соответствует задаче. Любые «объяснения» о том, почему Spring не любит заказывать экземпляры, также не соответствуют задаче.
Ордера заказ :)
Весна определяет порядок в зависимости от зависимостей бобов и '@ DependsOn'. Интерфейс '@ Ordered' или' Ordered' служит совершенно другой цели, так что попытка будет бесполезной. Единственное, что будет работать, это '@ DependsOn'. Но почему порядок важен, как создаются бобы? Единственное, что * может * работать, - это определить каждый компонент в своей «Конфигурации @» и заказать их (но это будет работать только в последних версиях Spring или Spring Boot). –
Причина в том, что я желаю заполнять коллекции на уровне конфигурации. Между созданием компонента с правильно заполненными свойствами нет никакой разницы. Коллекции также должны быть в правильном порядке. Беспорядочное население означает то же самое, что если бы кто-то не мог вводить бобы под правильным названием. – Dims
Вы пытаетесь сделать что-то, что не предназначено для весны. Если вы хотите заполнить коллекцию, тогда заполните коллекцию в том порядке, в котором вы хотите. Создайте бобы, создайте коллекцию, а порядок бобов не имеет значения. Рядом с этой весной можно автоматически заполнить коллекцию со всеми позициями определенного компонента в определенном порядке, если эти бобы упорядочены (тем не менее порядок, в котором они созданы, не имеет значения, они будут упорядочены в конце). Я предлагаю вам поставить образец на то, что вы действительно хотите достичь, поскольку образец, который вы добавили, не то, что вы на самом деле хотите сделать. –