还是把没用的东西删除了,剩余如下图:

文章插图
五、编写autoconfigure项目1. 配置一个bean首先删除了自动启动类,咱们用不到,在
spring-boot-autoconfigure
项目中新建一个bean,此时不需要让这个bean在容器中,我们写一个自己配置,让他自动加入到容器中 。这就是自动配置的思想/** * 这里不需要让在容器中,我们写一个自己配置,让他自动加入到容器中 * @author wangzhenjun * @date 2022/10/14 16:26 */public class HelloService {@Autowiredprivate MyProperties myProperties;public String HelloWord (String username){return myProperties.getPrefix() + username + myProperties.getSuffix();}}
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");}}
经验总结扩展阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Docker | 容器互联互通
- 网关、子网地址 Docker | 自定义网络
- 手写编程语言-如何为 GScript 编写标准库
- SpringBoot 自定义注解 实现多数据源
- 怎样设置苹果手机铃声(ios自定义来电铃声)
- 自己动手写ls命令——Java版
- 魅族mx5的通知栏可以自定义吗
- 自定义ListView下拉刷新上拉加载更多
- 自定义View6 -塔防小游戏:第三篇防御塔随意放置+多组野怪
- 自定义映射resultMap