上海英文網(wǎng)站建設(shè)公司中國工商業(yè)聯(lián)合會
@ConditionalOnClass/@ConditionalOnMissingClass
使用場景
和@Configuration一起使用,用于條件注入
問題一
為什么我們使用的第三方j(luò)ar中,指定的類型不存在,第三方j(luò)ar在編譯時仍然通過?還打出了jar包?
下圖為spring-boot-autoconfigure
中的一個配置類SecurityDataConfiguration
。為什么SecurityEvaluationContextExtension
不存在,但是spring-boot-autoconfigure
在編譯打包時卻能成功?
其實這里有個誤區(qū),spring-boot-autoconfigure
在編譯打包時,SecurityEvaluationContextExtension
是存在的。
spring-boot-autoconfigure
maven中導入了SecurityEvaluationContextExtension
所在jar的坐標,所以可以通過編譯。但是在maven中導入這個jar包時指定了<optional>true</optional>
,所以依賴不會傳遞到我們的工程。我