How SpringBoot AutoConfiguration magic works?
(www.javacodegeeks.com)
annotation 太多個或是太多層容易變得很難懂。
太多層是我對 spring boot 最困擾的部份
文中的例子像是 @DatabaseType
就是 meta annotation ,而它的上一層是 @Conditional(DatabaseTypeCondition.class)
,所以這是兩層的結構。
感覺上只有兩層還好?可是你看 auto configuration 上面掛的 annotation:
@Configuration
@ConditionalOnClass({ DataSource.class, EmbeddedDatabaseType.class })
@EnableConfigurationProperties(DataSourceProperties.class)
@Import({ Registrar.class, DataSourcePoolMetadataProvidersConfiguration.class })
public class DataSourceAutoConfiguration { ... }
總共掛了四個,value 有一共有五個參數,請問有哪些是單層的 annotation,哪些是雙層以上的 meta annotation ?
看到這種程式就頭暈了,很難 trace 啊。
spring 從 xml 轉到現在的 java based 的設定,很多都是靠 annotation,但老實說 annotation-based 設定其實一多起來並沒有比 xml 好懂,這種只能算是 annotation-based 的設定吧,算不上真正的 純 java
設定。