前言
距离本学期结束就要去实习的时间已经很短了,那么在这里我帮助大家完整的回忆一下SpringBoot的完整操作,为了更加直接体现完整的过程我会使用层叠法来完成这个系列文章,会从最新版本idea社区版本的下载开始,直至我们代码开发的整个阶段,可以将接口完全搞出来,跨域后让前端的项目可以解析,完成整个开发的闭环操作,准备工作的孩子们可以持续的跟着看看,应该会给你提供比较大的帮助。
声明:由于刚毕业的还比不可能上来就上大的微服务架构,所以这里不提供springcloud内容,当然我会在下一个系列中将本次学到的整个springboot融入到springcloud中。
系统与开发环境
系统:Windows 11 家庭中文版
idea:官网2024年1月最新社区版本:ideaIC-2024.1
数据库:阿里云RDS for MySQL 5.7
基础idea环境搭建
基础maven配置(外部独立maven)
基础maven默认配置(默认maven)
SpringBootWebProject学习——正文
我这里还是使用英文的版本了,这个用的多,更方便大家熟悉。
项目创建
创建的是maven项目,maven配置在上面的链接中可以看到,使用默认的和外部引入的都可以。
另外这里使用的JDK是1.8的,毕竟这个是稳定版本,各种运行都不会出现版本异常的问题。
修改maven配置
我这里用的是外部的maven配置,镜像用的还是阿里的。
更换pom.xml配置
这里我给了完整的pom.xml配置,里面包含了mybatis、swagger、json、junit等内容,后面用这就方便了,更换完毕后一定刷新maven。
<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 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>SrpingBootWebDemo1</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>APIDemos Maven Webapp</name> <url>http://maven.apache.org</url> <!-- 引入2.3.4的spring-boot --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.4.RELEASE</version> </parent> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- 阻断器·打包的是否排除内置的tomcat --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </dependency> <!--okhttp3 依赖--> <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>4.9.3</version> </dependency> <!-- 原项目 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.15</version> </dependency> <!-- swagger包这里2.9.2 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency> <!-- 用作字符串非空判断 --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.12.0</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!-- 热部署 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> <!-- Web支持 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- JDBC --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!-- MySQL驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!-- 集成MyBatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.2</version> </dependency> <!-- junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency> <!-- 测试 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.vaadin.external.google</groupId> <artifactId>android-json</artifactId> <version>0.0.20131108.vaadin1</version> <scope>compile</scope> </dependency> </dependencies> <build> <finalName>APIDemos</finalName> </build> </project>
更新maven
添加各层关系
- com.item.controller控制层
- com.item.dao数据接口层
- com.item.model模型层
- com.item.service业务逻辑接口层
- com.item.serviceimpl业务逻辑实现层
- com.item.swagger接口文档swagger配置
- com.item放置Action启动类
- resources.mapper数据xml实现层
我这里都先放置了一个类文件,写的名字都是Object,后面用起来直接改名字就行,也方便。
com.item下启动文件Action代码
package com.item; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; @MapperScan("com.item.dao") @SpringBootApplication public class Action extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Action.class); } public static void main(String[] args) { //一定是被@SpringBootApplication标记的类 SpringApplication.run(Action.class, args); } }
controller层ObjectController类
package com.item.controller; import io.swagger.annotations.Api; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.RestController; @Api("接口声明") @RestController @CrossOrigin public class ObjectController { }
dao层ObjectMapper类
package com.item.dao; import org.springframework.stereotype.Repository; @Repository public interface ObjectMapper { }
model层Object类
package com.item.model; public class Object { }
service层ObjectService类
package com.item.service; public interface ObjectService { }
serviceimpl层ObjectServiceImpl类
package com.item.serviceimpl; import com.item.service.ObjectService; import org.springframework.stereotype.Service; @Service public class ObjectServiceImpl implements ObjectService { }
swagger层SwaggerConfig类
package com.item.swagger; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.service.Contact; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; @Configuration @EnableSwagger2 public class SwaggerConfig { private static Logger log = LoggerFactory.getLogger(SwaggerConfig.class); @Bean public Docket createRestApi() { log.info("进入到swagger的配置中"); return new Docket(DocumentationType.SWAGGER_2) // 指定构建api文档的详细信息的方法:apiInfo() .apiInfo(apiInfo()) .groupName("红目香薰·为毕业答辩孩子准备的Java项目") .select() // 指定要生成api接口的包路径,这里把controller作为包路径,生成controller中的所有接口 .apis(RequestHandlerSelectors.basePackage("com.item.controller")) .paths(PathSelectors.any()) .build(); } /** * 构建api文档的详细信息 * @return */ private ApiInfo apiInfo() { return new ApiInfoBuilder() // 设置页面标题 .title("Spring Boot集成Swagger2接口总览") // 设置接口描述 .description("Swagger接口") // 设置联系方式 .contact(new Contact("测试swagger","https://laoshifu.blog.csdn.net/","")) // 设置版本 .version("1.0") // 构建 .build(); } }
dao实现层mapper文件基本代码
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- 适当更改dao层对应的文件名称 --> <mapper namespace="com.com.item.dao.ObjectMapper"> </mapper>
注:所有必须的注释内容都我放在对应的代码中了,无需额外配置,让你肯定能运行得起来。
配置文件
配置文件放在【resources】的根目录下。
配置代码
注意提换【your info】,最后一个server.servlet.context-path是服务器的路径,访问的时候会用到例如:【http://127.0.0.1:8088/MyAPI/】这是基础服务路径,后面加上对应的controller路径即可。
# driver spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # database spring.datasource.url=jdbc:mysql://【your database url】:3306/test?characterEncoding=utf8 # userName spring.datasource.username=your userName # pwd spring.datasource.password=your pwd # xml_url mybatis.mapper-locations=classpath:mapper/*.xml # model mybatis.typeAliasesPackage=com.item.model # port server.port=8088 # projectPath server.servlet.context-path=/MyAPI
至此,项目基础框架配置完毕,后续只需要对应的修改或增添代码即可。