最后更新于
这有帮助吗?
最后更新于
这有帮助吗?
转载:
从源码的角度讲解了 SpringBoot 自动化配置的原理,知道了它最终要干的事情不过是读取 META-INF/spring.factories 中的自动化配置类而已。
SpringBoot 项目就是由一个一个 Starter 组成的,一个 Starter 代表该项目的 SpringBoot 起步依赖,除了官方已有的 Starter,如果你需要将自己的项目支持 SpringBoot,那么就需要把它制作成一个 Starter。这篇博客依据 SpringBoot 的自动化配置原理,开发一个属于自己的 Starter。
自动化配置需满足两个条件:
能够生成 Bean,并注册到 Bean 容器中;
能够自动配置项目所需要的配置。
在这里创建一个 spring-boot-starter-helloworld 项目作为例子,实现以上两点。
引入 SpringBoot 自动化配置依赖:
spring-boot-starter-helloworld 只是作为例子演示自定义 starter 的过程,实现的功能很简单就是创建一个 HelloworldService 的,并配置 sayHello() 方法打印的语句。
创建属性类,prefix = “helloworld”
代表该项目在属性文件中配置的前缀,即可以在属性文件中通过 helloworld.words=springboot,就可以改变属性类字段 words 的值了。
创建自动化配置类,这个相当于就是一个普通的 Java 配置类,可以在这里创建 Bean,并可获得与 application.properties
属性文件相对应的属性类的 Bean。
在 META-INF 目录下创建 spring.factories
,这个属性文件可重要啦,因为 SpringBoot 自动化配置最终就是要扫描 META-INF/spring.factories
来加载项目的自动化配置类。
为了引入 starter,我在这里再创建一个 spring-boot-starter-helloworld-sample 项目。
添加 spring-boot-starter-helloworld 起步依赖:
在 application.properties 中添加属性:
在 SpringBoot 主程序中 注入 helloworldService。
访问 http://localhost:8080/,打印以下结果:
要源码的同学点击这里获取: https://github.com/objcoding/spring-boot-starter-tutorial