在某些情況下,我們在容器啟動的時候做一些事情,舉個例子,加載緩存等。。
此時我們會希望某個bean先被加載並執行其中的afterpropertiesset方法。
因為spring默認是根據是否有@Ordered注解(ordered和maven三方庫依賴管理一樣,也應該作為公共資源分配,這是正統方法)控制的,如果沒有注解的情況下,通過context:component-scan base-package配置中類的全名進行升序加載的,因此,如果希望某個bean先加載,可以將其包名更改使得排名最前即可,主要是在很多三方庫bean的加載和業務有沖突的時候,但是三方庫順序我們無法控制的時候臨時折中方案。
spring中有提到實現了BeanPostProcessor接口的bean會被優先加載,但我們實際用下來發現這並不可行,還出現了另一個spring mvc初始化的錯誤java.lang.IllegalArgumentException: The ConversionService may not be null。
通過將該bean的fqn排到加載的最前面后,即實現了最先加在的目的,也沒有出現該錯誤。