springboot学习(10)(自定义starter)(自定义mybatis的starter)(解决:java:错误:不支持发行版本?)

目录

一、引言

(1)为什么要学习自定义starter?

(2)如何自定义starter?

二、制作一个自定义mybatis-starter

(1)需求

(2)步骤

(3)开始实操

【1】创建"dmybatis-spring-boot-autoconfigure"模块

【2】创建"dmybatis-spring-boot-starter"模块

【3】先在"dmybatis-spring-boot-autoconfigure"里面提供自动配置的功能

【4】现在处理"dmybatis-spring-boot-starter"模块(工程)

【5】开始最后清理并完成

【6】测试一下,看自己自定义的starter能否代替mybatis提供的起步依赖去使用

三、总结

(1)java:错误:不支持发行版本 ?解决方法

(2)回顾刚刚自定义starter的步骤总结

一、引言

(1)为什么要学习自定义starter?
  • 在实际开发中,经常会定义一些公共组件,提供给各个项目团队使用。而在SpringBoot的项目中,一般会将这些公共组件封装为SpringBoot的starter。
  • 在Spring Boot中,starter又被称为起步依赖。starter是Spring Boot项目中的一个核心概念,它极大地简化了项目的搭建和配置过程。具体来说,starter可以理解为一组预定义的依赖项集合。
  • 例如Web应用开发。通过引入"spring-boot-starter-web",开发者可以快速搭建基于Spring MVC的Web应用程序。
(2)如何自定义starter?
  • 可以参考别人定义的starter,照着自己定义就行。
  • 我们可以根据mybatisstarter的学习,一般情况,起步依赖会有两个工程组成。一个是:"xxx-autoconfigure",用来提供自动配置功能。另外一个是用来提供:"xxx-starter",用来提供依赖管理功能。会在starter中引入autoconfigure,将来别人在使用的时候,只要引入starter就行了,相当于将autoconfigure也就引入进来了——>当我们把这两个工程提供好,自定义的starter的制作好了。

二、制作一个自定义mybatis-starter

(1)需求
  • 自定义mybatis的starter。也就是我们不使用mybatis提供的起步依赖,自己去尝试制作一个。
(2)步骤
  • 第一步。创建"dmybatis-spring-boot-autoconfigure"模块(工程),提供自动配置功能。并自定义配置文件"META-INF/spring/xxx.imports"(这个在上一篇自动配置中将到过,这个配置文件springboot需要其自动读取)。然后工程名是为了与mybatis提供的起步依赖进行区分一下。
  • 第二步。创建"dmybatis-spring-boot-starter"模块,并在starter中引入自动配置模块(也就是上面的"xxx-autoconfigure")
(3)开始实操
【1】创建"dmybatis-spring-boot-autoconfigure"模块
  • 打开IDEA,找到file——>打开ProjectStructure(模块结构)——>选择Modules——>再点击"+"号——>点击new Module


  • 首先我们上面提到的模块"dmybatis-spring-boot-autoconfigure"是一个普通的Maven工程,所以选择创建Maven工程,最后点击创建——>点击应用即可


【2】创建"dmybatis-spring-boot-starter"模块
  • 还是和上面一样的操作,file——>项目结构——>模块(Modules)——>new Module,这次也是创建一个Maven的工程



【3】先在"dmybatis-spring-boot-autoconfigure"里面提供自动配置的功能
  • 如果在这里要提供mybatis的自动配置功能的,首先就要引入对应的依赖。不清楚——>去查看mybatis提供的起步依赖,看看别人引入了哪些坐标
  • 查看在这个起步依赖中,mybatis它引入了哪些jar包——>"xxx-spring-boot-starter"(springboot核心起步依赖)、"xxx-jdbc的起步依赖"、"mybatis-spring-boot-autoconfigure"(mybatis提供的自动配置的工程)、"mybatis的坐标"、"mybatis与spring整合的坐标"。——>所以待会除了"xxx-autoconfigure"不需要引入它的,其它都需要引入,因为这个"xxx-autoconfigure"是我们自己去提供,不需要去引入它提供的坐标


  • 打开其下的.pom文件,依次添加坐标(导入依赖),注意新版的springboot是"spring-boot-starter-jdbc"

  • 上面的坐标真正引入进来后,下面去写自动配置类。去src——>main——>com.feisi包下new一个新的软件包——>包名(config)——>再创建一个类"MybatisAutoConfig"



  • 接下来在这个类上面添加一个注解@AutoConfiguration

  • 接下来需要在类中提供两个方法。分别用来注入"SqlSessionFactoryBean"与"MapperScannerConfigurer"这个两个对象
  • 下面这行代码会给我们创建一个"SqlSessionFactory"这个工厂,而这个工厂是用来创建"SqlSession"的,而"SqlSession"是 MyBatis 框架中的一个核心接口,它代表了和数据库进行交互的会话,是会话对象。将来要连接数据库——>所以要指定要连接哪个数据库——>之前在pom文件中已经引入了一个jdbc的起步依赖,这个jdbc起步依赖会自动的往Ioc容器当中自动注入一个"datasource"(数据源对象),若需要使用数据源就在方法的参数声明对应类型的参数即可"(DataSource dataSource)"——>然后接着只要把dataSource注入到"SqlSessionFactory",它就直到要连接谁了。

  • 然后同样的处理"MapperScannerConfigurer"。
  • 在返回这个对象的时候,还需要这个对象设置一些属性

  • 我们要知道——>"mapperScanner"是干啥的?——>用来进行mapper扫描的,所以要告诉扫描哪个包、以及扫描哪个注解——>所以继续完成代码的补充

  • 回想springboot工程会自动的扫描启动类所在的包及其子包,所以这里也设置为启动类所在包及其子包。那以后咋知道启动类所在的包和其子包呢?——>springboot提供了对应的API——>在pom文件中我们之前是引入了springboot的核心起步依赖,这里面给我们提供了对应的API

  • 这个bean工厂其实就是上面的"SqlSessionFactory"这个工厂对象
  • 看弹幕的解释,这里博主学的不深,现在还不太理解(spring整合mybatis的时候配置了这两个bean,mapper扫描就是把sqlsession工厂bean放进去然后生成接口list完成aop。mybatis一共就两个特点。第一点是,链接数据库控制增删改查;第二个特点是,,可以通过定义的接口,来自动创建一个实现类,执行sql语句)
  • 我们注意:在我们的这些方法中,需要用哪些对象,就需要在方法中声明即可,将来springboot会帮我们自动注入。所以在参数里声明一个BeanFactory。且这个get()方法会返回一个集合,这个集合里面其实放的就是包名,因为启动类所在的包名不只有一个——>然后只要获取这个集合的最上面的那一个包名即可——>用集合.get(0)即可

  • 接着设置扫描的注解(都是mapper注解)


  • 最后在return回去设置好的对象(后面配置文件调好,就不会报错了!因为你弄了一个自动配置注解还有一个@Bean注解,它springboot没有配置文件里面的全类名,就会报错这个Bean扫描)

  • 接下来我们要注意现在写好的自动配置类,凭什么能够被springboo读取到,所以我们要去配置文件里面去声明这个自动配置类的"全类名"——>所以提供配置文件"xxx-imports(dear imports)"——>因为名字太长了,直接去抄一下

  • 回到自己的"dmybatis-spring-boot-autoconfigure"工程里面。去src——>main——>新建一个resources目录



  • 再去resources目录下新建一个目录META-INF(这个名字千万不能改),再新建一个目录"spring",然后新建一个文件,把上面在库里面copy的配置文件名填进去即可

  • 然后在配置文件中,写上我们最上面写的自动配置类的全类名。再回到配置文件中CTRL+v。现在这个"dmybatis-spring-boot-autoconfigure"工程已经准备好了,已经具备自动配置的功能了

【4】现在处理"dmybatis-spring-boot-starter"模块(工程)
  • 而starter这个工程是只提供依赖管理的功能。所以去pom文件——>引入我们上面写好的模块"dmybatis-spring-boot-autoconfigure"的依赖

  • 而根据官方的写法推荐,我们还需要引入模块"dmybatis-spring-boot-autoconfigure"中它引入的依赖。因为将来要使用的,是直接引入这个"dmybatis-spring-boot-starter",然后如果需要对这里面所管理的依赖进行一个排除,所以就会更加方便一点。(直接去复制粘贴就行了)所以最终的依赖就引入完毕了,如下

【5】开始最后清理并完成


  • 最终这个自定义的起步依赖就完成好了

【6】测试一下,看自己自定义的starter能否代替mybatis提供的起步依赖去使用
  • 首先用的还是之前学习工程"springboot-quickstart",它里面实现的就是查询数据库中对应id的所有信息。具体想了解,可以看之前的博客,查看该工程的整体创建流程

SpringBoot学习(5)(springboot整合mybatis)-CSDN博客文章浏览阅读1.1k次,点赞17次,收藏18次。springboot工程如何快速的整合mybatis的基础用法与案例分析!(pom文件引入起步依赖、yml文件书写简单配置信息...)https://blog.csdn.net/m0_74363339/article/details/141894888?spm=1001.2014.3001.5501

  • 这里展示一下controller层、启动类的代码(具体去之前博客看)


  • 这里首先我们把pom文件之前引入的mybatis起步依赖换成刚刚自己自定义的starter

  • 记得刷新Maven,然后记得启动数据库的连接。测试成功!!!

三、总结

(1)java:错误:不支持发行版本 ?解决方法

仅供参考!

  • 因为Maven的工程,默认依赖的jdk版本是5,太低了,不支持。可以去pom文件配置一个编译插件??代码如下,将这个添加到依赖<dependencies>下面即可,两个自定义的工程模块的pom文件都复制一份进去,然后刷新Maven即可。这里面的版本号,都选择最新的即可(编译器提示的)。
  • 解释一下稍微。<configuration>配置,配置两个东西——><source>源的版本:配置17,和boot工程版本一致。
<build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.13.0</version>
        <configuration>
          <source>17</source>
          <target>17</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
(2)回顾刚刚自定义starter的步骤总结

  • 19
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岁岁岁平安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值