之所以報空指針異常,是因為Spring bean的加載順序沒有控制好,一個bean所需的另一個bean還沒有實例化。
可以加上@DependsOn注解。
@DependsOn注解可以定義在類和方法上,意思是我這個組件要依賴於另一個組件,也就是說被依賴的組件會比該組件先注冊到IOC容器中。
@DependsOn(value= {"b","c","d"})
@DependsOn("a")
//可以作用在方法和類上。 //當作用在類上時,通常會與@Component及其衍生注解等注解配合使用。 //當作用在方法上時,通常會與@Bean注解配合使用。
@ConditionalOnBean注解是只有當另外一個實例存在時,才創建,否則不創建,也就是,最終有可能兩個實例都創建了,有可能只創建了一個實例,也有可能一個實例都沒創建