spring.main.allow-bean-definition-overriding設置為true婚脱,表示后發(fā)現(xiàn)的bean會覆蓋之前相同名稱的bean
到底allowBeanDefinitionOverriding應該設置true還是false棒口?
上面代碼中可以看到伊磺,spring中默認是true倔约,也就是默認支持名稱相同的bean的覆蓋。而springboot中的默認值是false腮猖,也就是不支持名稱相同的bean被覆蓋税稼。
那么我們自己應該如何選擇呢?
這里筆者認為默認不覆蓋比較好狞贱。
因為還是推薦一個系統(tǒng)中不要存在名稱相同的bean刻获,否則后者覆蓋前者,多人分工合作的時候瞎嬉,難以避免某些bean被覆蓋蝎毡,會出現(xiàn)很多詭異的問題 ,甚至會帶來線上真實的業(yè)務損失氧枣。
bean的名稱不相同沐兵,依據(jù)具體的業(yè)務給bean起名字。這樣不但可以解決bean名稱重復的問題便监,還可以大大提高程序的可讀性與可維護性扎谎。
只有當集成了第三方的庫碳想,不同庫直接由于是多個團隊開發(fā)的,甚至這些團隊屬于不同的國家毁靶,有可能會出現(xiàn)bean名稱相同的情況胧奔。這種情況就需要根據(jù)實際需求來設置allowBeanDefinitionOverriding的值了。