Auto-configuration的规范

尽管springboot的官方文档很糟糕,但是关于Auto-configuration还是写得比较好的,位于springboot reference中的Creating Your Own Auto-configuration。

至于为什么要用 Auto-configuration,可以见我写得这一篇文章:@SpringBootApplication中几点解惑

springboot官方提供的一个样例,非常不错,看了以后,auto-configuration就学会了:Master Spring Boot auto-configuration

auto-configuration的代码分层架构

官方推荐分成2个工程,一个starter,另一个autoconfigure。
但是我个人认为就那么一个starter就好了,何必分成2个工程,感觉多此一举的,因为starter纯粹就是一个空工程。
不过,话反过来说,学会了2个分开的工程,合成一个工程也是超级简单的,所以无所谓一个工程还是2个工程。

命名常规

官方的auto-configuration,比如yyy来举例,那么应该是 spring-boot-starter-yyy.jar,spring-boot-autoconfigure-yyy.jar
非官方的auto-configuration,比如xxx来举例,那么应该是 xxx-spring-boot-starter.jar,xxx-spring-boot-autoconfigure.jar
上面已经描述很清晰了,不再解释了。

spring-factories

对于auto-configuration工程来说,已经取消了Component auto scan的功能,代而取之的是采用spring-factories的方式,这个spring-factories文件位于autoconfigure这个工程中。

spring-provides

这个文件在springboot的官方文档中是没有提到的,那这个spring-provides文件用来干什么的?我查了有个人这么解释的:

It's for tooling. STS (and other IDEs if they chose to) can index those files and make autocomplete suggestions based on stuff that isn't yet on the classpath.

哦,原来是给STS,或者IDEA用的,这个文件放置在starter这个工程中,那就不用去管这个文件了。

好了,springboot的 auto-configuration就这么简单。

发表评论

邮箱地址不会被公开。 必填项已用*标注