全网最详细手写starter组件教程
那么在写这篇博客之前,先问一下大家为什么要写starter组件,仅仅只是为了炫技吗?还是真正的在业务中需要.在现在的开发环境下,什么是竞争力? 举例分页查询来说,每个来公司的程序员都有一套自己写分页的流程,但是这套流程基本上都是重复的,那么我们可以将这套流程简化吗?明确的说可以,那么我们就只写写一个starter组件,这个组件写入之后,在springboot项目中只需要导入这个组件依赖,那么可以给想给的业务进行分页,而不需要写分页代码,这就是核心竞争力,这就是值钱的地方
类似上面只需要加一个注解,那么这个功能分页就直接写好了,我们不用写分页组件
文章目录
- 全网最详细手写starter组件教程
- 那么在写这篇博客之前,先问一下大家为什么要写starter组件,仅仅只是为了炫技吗?还是真正的在业务中需要.在现在的开发环境下,什么是竞争力? 举例分页查询来说,每个来公司的程序员都有一套自己写分页的流程,但是这套流程基本上都是重复的,那么我们可以将这套流程简化吗?明确的说可以,那么我们就只写写一个starter组件,这个组件写入之后,在springboot项目中只需要导入这个组件依赖,那么可以给想给的业务进行分页,而不需要写分页代码,,,这就是核心竞争力,这就是值钱的地方
- 下面我就带领大家去写一个starter组件,我们去剖析这个组件,这个组件是我们自定义的,所以就是自定义组件的书写,但是要与业务契合
- 第一步新建工程
- 首先父工程是写的以parent为结尾的
- 然后记得打包为pom方式
- 开发web项目需要引入spring-boot-starter-web依赖
- 那么就开始写第一个分页的接口
- 先定义一个接口
下面我就带领大家去写一个starter组件,我们去剖析这个组件,这个组件是我们自定义的,所以就是自定义组件的书写,但是要与业务契合
对于组件的书写,我们不能一上来就直接写组件,而是基于原本的业务代码去拆分,去提取,首先我先给你们一个分页的业务代码:
算了还是带大家一起写一个工程,从而再拆分,我说了这是全网最详细的手写starter教程
第一步新建工程
首先我们新建一个springboot项目
可以直接使用启动器新建springboot项目
然后点击next下一步
然后选择springboot的版本,然后还有所需依赖版本
然后点击创建
新建工程后只留需要的依赖
坐标是需要的其他的可以删除
然后需要写一下父工程
要标记这个是springboot项目 可以使用标签写
首先父工程是写的以parent为结尾的
然后记得打包为pom方式
依赖有两个依赖写在父工程
开发web项目需要引入spring-boot-starter-web依赖
然后可以开发接口
首先根据数据库的进行书写实体类的信息,可以加入lombok的组件
三层架构先建好
然后我们就配置数据库的yml文件
然后运行
运行成功,说明没有错误
那么就开始写第一个分页的接口
先定义一个接口
package com.healer.controller;import com.healer.model.pojo.Emp;
import com.healer.model.vo.common.Result;
import com.healer.model.vo.common.ResultCodeEnum;
import com.healer.service.EmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.util.List;/*** @author healer* @Description EmpController* @data 2024-07-03 20:27*/
@RestController
@RequestMapping("/api/emp")
public class EmpController {@Autowiredprivate EmpService empService;@GetMappingpublic Result<List<Emp>> selectEmp(@RequestParam("pageNum") Integer pageNum, @RequestParam("pageSize") Integer pageSize) {List<Emp> empList = empService.selectEmp(pageNum, pageSize);return Result.build(empList, ResultCodeEnum.SUCCESS);}
}
service层
首先我们先用分页插件pagehelper做,然后再拆分为starter组件
使用pagehelper首先要引入依赖
直接编写代码
那么如果多个接口写分页的话,那么代码就是重复的代码代码的重复,复用,
所以我们可以写一个分页的starter组件,只要引入我们的组件那么只需要在方法上面加注解那么就,直接完成了分页,简化开发流程
简化代码
那么就先了解
首先启动器有core
在Spring Boot Starter组件中,core通常指的是核心启动器(spring-boot-starter),它包含了Spring Boot应用程序所需的基础设施。core的主要作用是提供自动配置、日志和YAML等基础支持
在core里面可以去自定义的注解
用于整理
那么分页就是 使用PageX去代表
使用这个注解
这个就是注解
上面三个是元注解没有特殊含义
注解声明完后可以写starter
首先这个分页是基于aop去做,基于aop去实现分页
那么开始写组件
首先新建工程
组件的group尽量使用cn 不要使用com 因为组件的包可以会与你项目中的包重名,那么可以就是导致自动配置的开关失效
这个是父工程
父工程中的pom文件要修改
父工程要写依赖管理
管理子工程中所以的依赖然后控制版本号
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>cncs.smart</groupId><artifactId>smartces-root</artifactId><version>0.0.1-SNAPSHOT</version><parent><artifactId>spring-boot-starter-parent</artifactId><groupId>org.springframework.boot</groupId><version>2.3.12.RELEASE</version><relativePath/></parent><packaging>pom</packaging><dependencyManagement><dependencies><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.2</version></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.26</version></dependency></dependencies></dependencyManagement><properties><java.version>1.8</java.version></properties></project>
子工程新建完毕
首先要写自动配置
最重要的就是在resource下面新建一个META-INF的文件夹然后再写一个spring.factories的文件里面就配置自动配置的信息
当你不知道要引入那个包去实现依赖的使用可以,点进去
那么直接引入就可以使用
切点使用注解的方式,那么可以在core中写注解
那么就需要进入注解core核心
这个是域名信息,