4
How SpringBoot AutoConfiguration magic works? (www.javacodegeeks.com)
IngramChen 積分 6 編輯於

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 設定。