Как указать профиль по умолчанию, который 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, если профиль явно не указан.
Ответы
Ответ 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>