springboot 扫描文件夹_Spring Boot学习07_自定义starter

查看Spring Boot的源码,starter包并没有真正的代码,代码都在autoconfigurer包中,所以我也可以照葫芦画瓢,创建一个starter项目和一个autoconfigurer项目,在autoconfigurer项目中写自动配置类,在starter项目中依赖autoconfigurer项目,到时候别人用就直接引入starter的坐标就能使用我自定义的starter了

21fea2f7775017d512aaeb4a5b83793c.png

b6b82de08423d46dc3069fbabf6a70c9.png

Mybatis的starter与autoconfigurer也是自己写的,所以我们的命名方式可以根据它这样来定义为ahead-spring-boot-starter,ahead-spring-boot-starter-autoconfigurer

8fbc23c0b6b5016f7fabd2658816365a.png

1、创建一个普通的maven工程,打包方式为jar,名称为ahead-spring-boot-starter

105ef93032a96d23f7eff9448b1f49c8.png

2、创建一个Spring boot应用,命名为ahead-spring-boot-starter-autoconfigurer,不需要添加任何组件,只保留默认的spring-boot-starter依赖就行,删除自带的maven插件,最终的pom文件如下

fb6e3cc497e1e7213ef77b24bb371d0b.png

c6f3e64fcfe9bf3c42d0f501ee37bdf4.png

3、编写自定义的starter

我在前面就写过SpringBoot的配置原理,通过全局配置文件中的值与xxxProperties属性映射并添加到组件中去,在配置类中就能获取到xxxProperties对象并获取其中的属性值设置给某些组件的属性,最后在classpath路径下的META-INF文件夹下的spring.factories文件中指定需要自动配置的类,就会被SpringBoot读取到,达到了自动配置的效果

3.1、创建HelloProperties类并指定与全局配置文件中的那个下面的属性进行映射

7352b77cadbeeaa9f00f4f0da932c996.png

3.2、编写HelloService组件

34f1048575957dcdeda06abd1dc4f000.png

3.3、编写HelloAutoConfiguration自动配置类,并注册HelloService组件

3da793958bbaae8e03b7fee74cb97e1c.png

3.4、在classpath下的META-INF文件夹下的spring.factories文件指定要自动配置的类(之前用@Configuration注解标注的配置类因为在Spring Boot主配置类的扫描范围内,而这里的扫描不到,就需要在文件中指定自动配置类的位置,这样Spring Boot就能获取到)

dbef995addaf15c47f34785589f6b948.png

3.5、在starter项目中引入autoconfigurer项目的坐标,并通过maven命令先打包

ahead-spring-boot-starter-autoconfigurer项目在打包ahead-spring-boot-starter项目

0332ae4ac28c5b6843724843fa394143.png

4、编写一个Spring Boot应用进行测试

4.1、引入自定义的starter

62e864d00dacbf96320866eef1642535.png

4.2、在全局配置文件中指定HelloProperties中的name属性值

8254cb01374243d716d1a30fe6313c46.png

4.3、编写HelloController并启动应用通过浏览器访问测试。

51a7d8dd239831630617a7d5130e8e2f.png

4.4、自动配置成功

759ac3792f2af1e2c747241d4765f4f2.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值