2016-03-22 4 views
1

У меня есть следующая конфигурация в моем весеннем контексте:Пружинные профили: Какой элемент <beans> нужно разобрать?

<beans profile="!prof1" > 
    <security:authentication-manager id="authenticationManager" erase-credentials="true"> 
       <security:authentication-provider ref="1" /> 
       <security:authentication-provider ref="2" /> 
       <security:authentication-provider ref="3" /> 
      </security:authentication-manager> 
</beans> 

<beans profile="prof1" > 
    <security:authentication-manager id="authenticationManager" erase-credentials="true"> 
       <security:authentication-provider ref="0" /> 
       <security:authentication-provider ref="1" /> 
       <security:authentication-provider ref="2" /> 
       <security:authentication-provider ref="3" /> 
      </security:authentication-manager> 
</beans> 

Существует вопрос, который <beans> элементы будут разобраны принимать во внимание: что prof1 и prof2 профили активируются.

Похоже, он всегда выбирает этот <beans profile="prof1" >, но не уверен, почему он не выбирает другой <beans profile="!prof1" >. Могу ли я передать, что он всегда будет выбирать <beans> без восклицательного знака?

ответ

2

В Javadoc for Profile говорится, что

Если данный профиль с префиксом оператора NOT (!), аннотированный компонент будет зарегистрирован, если профиль не активен.

spring-beans XSD состоянии те же для определения XML боба, но это труднее читать.)

Как я понимаю это, только prof1 смотрятся на для элемента фасоли с профилем = «! Prof1». То, что вы также активируете prof2 не относится к данному компоненту.

+0

Спасибо, Майкл за разъяснение! – fashuser

1

Если активный профиль prof1 и prof2 следующие будут активны

<beans profile="prof1" > 
<security:authentication-manager id="authenticationManager" erase-credentials="true"> 
      <security:authentication-provider ref="0" /> 
      <security:authentication-provider ref="1" /> 
      <security:authentication-provider ref="2" /> 
      <security:authentication-provider ref="3" /> 
     </security:authentication-manager> 

+0

Thanks Essex! Не могли бы вы поделиться некоторыми документами, почему именно этот профиль будет выбран? Поскольку в настоящее время я вижу, что весна выбирает этот элемент , но не уверен, что он всегда будет правдой. – fashuser

+0

Я не смотрел документацию, я проверил тест. Я не понимал, что это так! Он делает то, что вы ожидаете, т. Е.! Prof1 будет активен для профиля теста. –