Подтвердить что ты не робот

Как указать профиль по умолчанию, который beans будет зарегистрирован в разделе Spring?

Учитывая:

<beans ... namespace decelerations>
     <bean id="foo" class="com.example.foo" />
     <beans profile="abc">
         <bean id="bar" class="com.exmaple.bar" />
     </beans>
</bean>

Каково имя профиля, в котором зарегистрировано foo? Есть ли способ переопределить foo в другом определении профиля? Есть ли имя профиля по умолчанию в spring, если профиль явно не указан.

4b9b3361

Ответ 1

Профиль по умолчанию в spring является "по умолчанию", см. это: https://jira.springsource.org/browse/SPR-8203

Вы можете изменить профиль по умолчанию в web.xml, выполнив следующее:

<context-param>
    <param-name>spring.profiles.default</param-name>
    <param-value>production</param-value>
</context-param>

Командная строка:

-Dspring.profiles.default=production

Env переменная:

export spring_profiles_default=production

Если установлен активный профиль, он переопределяет значение по умолчанию.

Ответ 2

Foo просто зарегистрирован без какого-либо профиля, он всегда будет создавать экземпляр независимо от профиля, который вы используете в этой среде. Spring позволяют создавать только несколько beans в файле XML с тем же id, если они находятся в разных наборах <beans>, поэтому я не думаю, что можно перезаписать Foo bean если он не находится внутри тега <beans> с профилем.

Если профиль не задан, Spring будет использовать профиль с именем default. Но, bean, который не находится внутри тега <beans> с профилем, не будет зарегистрирован под этим профилем. Это означает, что если у вас есть что-то вроде следующего XML и что профили не предоставляются, будет загружен beans с профилем по умолчанию, а также beans без профиля.

<beans ... namespace decelerations>
     <bean id="foo" class="com.example.foo" />
     <beans profile="default">
         <bean id="bar" class="com.exmaple.bar" />
     </beans>
</bean>