SpringBootWebProject学习——通用项目搭建(后面的项目均采用此项目进行添加内容)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: SpringBootWebProject学习——通用项目搭建(后面的项目均采用此项目进行添加内容)

前言

距离本学期结束就要去实习的时间已经很短了,那么在这里我帮助大家完整的回忆一下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

添加各层关系

  1. com.item.controller控制层
  2. com.item.dao数据接口层
  3. com.item.model模型层
  4. com.item.service业务逻辑接口层
  5. com.item.serviceimpl业务逻辑实现层
  6. com.item.swagger接口文档swagger配置
  7. com.item放置Action启动类
  8. 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

至此,项目基础框架配置完毕,后续只需要对应的修改或增添代码即可。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
19天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的在线投稿系统研究与设计的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的在线投稿系统研究与设计的详细设计和实现(源码+lw+部署文档+讲解等)
|
19天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的课程辅助教学平台的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的课程辅助教学平台的详细设计和实现(源码+lw+部署文档+讲解等)
|
18天前
|
JavaScript Java 测试技术
基于springboot+vue.js的商业辅助决策系统附带文章和源代码设计说明文档ppt
基于springboot+vue.js的商业辅助决策系统附带文章和源代码设计说明文档ppt
14 0
|
20天前
|
JavaScript Java 测试技术
基于springboot+vue.js的信息技术知识赛系统附带文章和源代码设计说明文档ppt
基于springboot+vue.js的信息技术知识赛系统附带文章和源代码设计说明文档ppt
27 2
|
21天前
|
JavaScript Java 测试技术
高校教师成果管理小程序+springboot+vue.js附带文章和源代码设计说明文档ppt
高校教师成果管理小程序+springboot+vue.js附带文章和源代码设计说明文档ppt
21 0
|
21天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的计算机公共基础课程mooc教学平台的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的计算机公共基础课程mooc教学平台的详细设计和实现(源码+lw+部署文档+讲解等)
|
21天前
|
JavaScript Java 测试技术
基于小程序的学生知识成果展示与交流+springboot+vue.js附带文章和源代码设计说明文档ppt
基于小程序的学生知识成果展示与交流+springboot+vue.js附带文章和源代码设计说明文档ppt
36 8
|
25天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue的教学辅助平台的设计与实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的教学辅助平台的设计与实现(源码+lw+部署文档+讲解等)
|
25天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue的信息学科平台系统的设计与实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的信息学科平台系统的设计与实现(源码+lw+部署文档+讲解等)