2015-02-10 2 views
3

Я использую Spring Boot и в основном просто использую опции автоконфигурации для большинства компонентов. Тем не менее, я нашел несколько примеров, когда мне просто нужно немного отличаться от Beans.Настроить сконфигурированный Spring Boot Bean

Каков наилучший/предлагаемый подход к этому? Во многих случаях я не хочу отключать autoconfig только для того, чтобы изменить одно свойство на bean-компоненте, поэтому, надеясь, что каким-то образом я могу разумно обновить свойства beans?

Случай у меня есть, DispatcherServlet - я доволен autoconfig, но я просто хочу, чтобы изменить мой DispatcherServlet так DispatchOptionsRequest устанавливается истина. Я надеюсь, что мне не нужно отключать autoconfig и копировать конфигурацию локально, чтобы вызвать этот метод setter?

+0

FYI: Я представил [PR] (https://github.com/spring-projects/spring-boot/pull/4300), чтобы сделать это конфигурируется с помощью свойств. Он, надеюсь, будет доступен в Spring Boot 1.3.0, когда он появится. –

ответ

3

Сервлет диспетчера может быть сконфигурирован путем объявления компонента типа DispatcherServlet с именем dispatcherServlet, а затем возвращает экземпляр, настроенный по своему усмотрению. Это переопределит предыдущую декларацию.

Пример:

@Bean 
public DispatcherServlet dispatcherServlet() { 
    DispatcherServlet servlet = new DispatcherServlet(); 
    servlet.setDispatchOptionsRequest(true); 
    return servlet; 
} 
+1

Прохладный - так просто назвав любой bean-компонент таким же, как bean, определенный в autoconfig весны, он всегда будет переопределять его? Есть ли какие-нибудь вещи, о которых я должен знать, если я возьму этот подход для других бобов? или весна-ботинок гарантирует такое поведение? – rhinds

+0

@rhinds Это почти так, как работает большая автоконфигурация. Справочные документы Spring Boot действительно заслуживают внимания. – chrylis

+0

@chrylis Я прочитал большинство документов, но не видел этого - увидел материал re: отключив autoconfig и различные условные .. аннотации - но ни один из этих случаев, релевантных здесь (его довольно длинный, хотя и так вероятно просто пропустил этот пункт :). Кроме того, если вы видите связанный исходный код для класса autoConfig - метод bean-компонента DispatcherServlet фактически используется при инициализации другого компонента (DispatcherServletRegistration) в том же статическом внутреннем классе - будет интересно посмотреть, как это все еще может работать с моим переоценить метод Bean? – rhinds

Смежные вопросы