2. 编写一个配置文件这里为了获取配置文件中的属性值,springboot自动配置源码里大部分都是,这样实现在一个配置文件中书写,其他的可以按照开头获取到属性和值
?。?
/** * @author wangzhenjun * @date 2022/10/14 16:28 */@Data@ConfigurationProperties("wang.name")public class MyProperties {private String prefix;private String suffix;}
3. 编写自动配置import com.wang.springbootautoconfigure.properties.MyProperties;import com.wang.springbootautoconfigure.service.HelloService;import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;import org.springframework.boot.context.properties.EnableConfigurationProperties;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;/** * @author wangzhenjun * @date 2022/10/14 16:33 */@Configuration//没有这个bean的时候才会生效@ConditionalOnMissingBean(HelloService.class)// 加载配置文件,让它成为容器中的bean@EnableConfigurationProperties(MyProperties.class)public class ServiceAutoConfiguration { /*** 把刚刚写的服务,加入到容器中*/@Beanpublic HelloService helloService (){return new HelloService();}}
主要就是condition
下的几个注解,来完成bean
是否加入到容器中:常用的:
- @ConditionalOnClass
- @ConditionalOnMissingClass
- @ConditionalOnBean
- @ConditionalOnMissingBean
- @ConditionalOnProperty
文章插图

文章插图
如果是springboot2.7以上就是:文件夹名称:
META-INF.spring
文件名称:org.springframework.boot.autoconfigure.AutoConfiguration.imports

文章插图
里面直接写全类名即可!
5. 打包先把
spring-boot-autoconfigure
打包到本地库,在打包spring-boot-starter
,顺序一定要有,不然找不到前者的包?。?
文章插图
六、测试我们那一个新项目进行测试 , 新项目小编就不带大家建了!
1. 导入咱们的starter依赖
<dependency><groupId>com.wang</groupId><artifactId>spring-boot-starter</artifactId><version>1.0-SNAPSHOT</version></dependency>
2. 添加配置文件wang: name:prefix: hellosuffix: 886

文章插图
3. 新建controller测试类
@RestController@RequestMapping("/test")public class TestController {@Autowiredprivate HelloService helloService;@GetMapping("/starter")public String starter(){return helloService.HelloWord("tom");}}
4. 测试访问成功访问 , 不过中文是有乱码的,小编找不到解决方法,有懂的还请留言告知?。?主流程通了就行,慢慢理解了自动配置的魅力!总流程应该就是这样的:引入starter --- xxxAutoConfiguration --- 容器中放入组件 ---- 绑定xxxProperties ---- 配置项

文章插图
中文是乱码,可能是servlet没有吧 , 有懂的可以留言告诉小编方案,谢谢大家?。?

文章插图
七、总结一看会就,一动手就废!大家还是要做自己实操,不要眼高手低,这样才会有收获,根本就是
约定大于配置+SPI发现机制
!还有就是一些经常出现在源码里的注解,大家记住就可以自己写starter了!可以看下一小编的微信公众号 , 和网站文章首发看,欢迎关注?。?

文章插图
点击访问!小编自己的网站,里面也是有很多好的文章哦!
【手写自定义springboot-starter,感受框架的魅力和原理】
推荐阅读
- Docker | 容器互联互通
- 网关、子网地址 Docker | 自定义网络
- 手写编程语言-如何为 GScript 编写标准库
- SpringBoot 自定义注解 实现多数据源
- 怎样设置苹果手机铃声(ios自定义来电铃声)
- 自己动手写ls命令——Java版
- 自定义ListView下拉刷新上拉加载更多
- 自定义View6 -塔防小游戏:第三篇防御塔随意放置+多组野怪
- 自定义映射resultMap
- OpenDataV低代码平台增加自定义属性编辑