2015-02-10 42 views
3

我使用的是Spring Boot,很大程度上只是使用大多數組件的自動配置選項。然而,我發現了一些我只想要與Beans稍有不同行爲的例子。自定義自動配置的Spring Boot Bean

什麼是最好的/建議的方法來做到這一點?在很多情況下,我不想爲了更改bean上的一個屬性而關閉autoconfig,所以希望有一些方法可以明智地更新bean屬性?

我的情況是DispatcherServlet - 我很高興與autoconfig,但我只是想改變我的DispatcherServlet所以DispatchOptionsRequest設置爲true。我希望我不需要關閉autoconfig並在本地複製配置,只是爲了調用setter方法?

+0

供參考:我提交[PR](https://github.com/spring-projects/spring-boot/pull/4300),以使通過屬性此配置。當Spring Boot 1.3.0發佈時,它應該可用。 – 2015-11-10 14:52:40

回答

3

可以通過聲明一個名爲dispatcherServletDispatcherServlet類型的bean來配置調度程序servlet,然後返回一個按您的喜好配置的實例。這將覆蓋先前的聲明。

實施例:

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

酷 - 所以只需通過命名與Spring自動配置中定義的bean相同的bean,它將始終覆蓋它?如果我將這種方法用於其他豆類,我是否應該知道有什麼事情?還是春季啓動保證這種行爲? – rhinds 2015-02-10 16:03:03

+0

@rhinds這幾乎是大多數自動配置的工作原理。 Spring Boot參考文檔非常值得一讀。 – chrylis 2015-02-10 17:56:03

+0

@chrylis我已閱讀大部分文檔,但沒有看到這一點 - 看到的東西重新:禁用autoconfig和各種條件..註釋 - 但這些情況都沒有在這裏相關(儘管它很長!只是錯過了這一點:)。此外,如果您看到autoConfig類的鏈接源代碼 - DispatcherServlet bean方法實際上用於同一個靜態內部類中的另一個bean(DispatcherServletRegistration)的初始化 - 將會很有趣,看看如何使用我的方法重寫Bean方法? – rhinds 2015-02-10 18:22:57

相關問題