使用SpringBoot3创建starter踩坑记录

 踩坑1

spring3中的一个变化是spring.factories变成了在META-INF/spring目录下创建文件名为org.springframework.boot.autoconfigure.AutoConfiguration.imports
内容为配置类的全类名。注意这里的目录需要依次建立,文件不能直接复制,否则不能出现这个绿色的图标。

踩坑2

首先我的被依赖项目A,和依赖项目B都是一个父项目的子模块。我在父项目中导入了如下依赖:


    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

这个依赖的目的是在打包时依赖的包打进去。

而我的A项目中因为父项目中有这个依赖,在mvn clean install 时报错找不到主类。

于是我在pom文件中加上

<packaging>pom</packaging>

A项目没有主类mvn install 可以成功了。

配置好上述的org.springframework.boot.autoconfigure.AutoConfiguration.imports

结果在项目B中注入不了

如果想要在B中引用A中配置文件里面的内容,比如定义的组件等,A和B都需要主类,并且在B的主类中在@SpringBootApplication(scanBasePackages = {A配置类所在包})

这样才能正常引入,感觉不太符合要求。

之后我直接注释掉了父项目中的依赖

然后更改A中打包方式为jar,之后在B中才能在SpringBootApplication注解中不定义扫描包,依然可以正常注入。

踩坑3

在用SpringBootTest注解时,我B中mian下的目录和test下的目录设置不一样,导致注入A中Bean失败。且最开始我还没有设置主类,就直接使用SpringBootTest注解,发现SpringBootTest会自动去找@SpringBootApplication下的主类。

全是基础错误,但是因为这些错误耽搁了好多时间,学习SpringBoot的时候根本没有深入,导致排错的时候花费大量时间。真的是基础不牢,地动山摇。

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot 的 Starter 是一种约定俗成的依赖包,它能够为开发者提供一种快速集成某一类功能的方式。如果你需要自定义一个 Starter,可以按照以下步骤进行: 1. 定义一个 Maven 项目,项目名称以 `spring-boot-starter-` 开头,例如 `spring-boot-starter-mybatis`。 2. 在项目中定义一个自动配置类,命名方式为 `XxxAutoConfiguration`,例如 `MybatisAutoConfiguration`。 3. 在 `META-INF` 目录下创建一个 `spring.factories` 文件,指定自动配置类: ``` org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.example.mybatis.autoconfig.MybatisAutoConfiguration ``` 4. 在项目中定义一个 Starter Starter 类,命名方式为 `XxxStarter`,例如 `MybatisStarter`,该类中可以提供一些公共的依赖和配置。 5. 打包发布到 Maven 仓库,供其他项目使用使用自定义 Starter 的步骤如下: 1. 在项目中添加依赖,例如: ``` <dependency> <groupId>com.example</groupId> <artifactId>spring-boot-starter-mybatis</artifactId> <version>1.0.0</version> </dependency> ``` 2. 在配置文件中配置相关属性,例如: ``` mybatis.mapper-locations=classpath*:mapper/*.xml mybatis.type-aliases-package=com.example.model ``` 3. 在代码中使用相关组件,例如: ``` @Autowired private SqlSessionTemplate sqlSessionTemplate; ``` 通过自定义 Starter,我们可以将一些常见的依赖和配置进行封装,提供给其他项目使用,大大简化了项目的开发和配置工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值