Давайте предположим следующую ситуацию. В конфигурационном файле XML пружинной есть созданные бобы:Autowire @Resource из xml и использовать их для генерации списка фасолей
<bean id="a" class="com.example.A" />
<bean id="b" class="com.example.B" />
<bean id="c" class="com.example.C" />
<bean id="d" class="com.example.D" >
<property name="myList" ref="myListBean">
</bean>
и файл конфигурации Java:
@Configuration
@ImportResource("path/to/beans.xml")
class JavaConfiguration {
@Resource
A a;
@Resource
B b;
@Resource
D d;
@Resource
C c;
@Bean
List myListBean(){
List l = new ArrayList();
l.add(a);
l.add(b);
l.add(c);
return l;
}
}
Из @Resource D D находится перед @Resource C с, Бина 'myListBean' будет содержать только { а, б, NULL}. Если я переключу его и @Resource C до D, тогда все будет в порядке. Есть ли хорошая практика, чтобы избежать этой ситуации, не зависит от порядка полей и не позволяет создавать список бобов с нулями?
Если у вас есть класс конфигурации, я бы рекомендовал вам определить все ваши компоненты там, только потому, что он чище. Тем не менее, вы можете поместить флаг зависимости в свою декларацию. –
Я полностью понимаю, что пример, который я показал здесь, не настолько хорош. Это выглядит частью старого кода в проекте, над которым я фактически работаю. Мне интересно, смогу ли я сделать это до сих пор. Мы будем делать рефакторинг в будущем, но это больший случай. –