java从后端到全栈 java后端转全栈开发_spring


1.前言

上一篇文章介绍了系统的技术架构:Alex Wang:全栈开发踩坑之路1-技术架构,本文介绍如何搭建后端的代码框架。本人是从零起步开始学习SpringBoot的,之前也没有用过Spring相关架构,因此在代码中会不厌其烦的给出注释。并且会把我学过的学习资源列举在文章末尾。

本后端项目的地址(撰写中):apkkids/mymis_end

2.搭建后端代码框架

根据上一篇中的技术决策,选择使用SpringBoot来构建后端框架。产生框架有多种方法,最常用的就是利用http://start.spring.io/来生成代码框架,不过IntelliJ中已经集成了这个功能,因此我使用IntelliJ搭建SpringBoot框架。

在IntelliJ中选择创建Spring Initializr项目,添加Security、Web和MySQL依赖,如下所示:


java从后端到全栈 java后端转全栈开发_数据库_02

生成SpringBoot框架


待代码框架生成完毕后,创建一些相应的代码包,最终代码结构如下所示:


java从后端到全栈 java后端转全栈开发_后端返回name_03

代码结构

代码生成后,首先修改SpringBoot的配置文件application.properties,主要是配置数据库和端口,如下:


#mysql
spring.datasource.url=jdbc:mysql://localhost:3306/mymis?useUnicode=true&characterEncoding=UTF-8
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=your_db_user_name
spring.datasource.password=your_db_user_password
#mybatis
mybatis.config-location=classpath:/mybatis-config.xml
#端口配置
server.port=8082


接下来,就可以试着运行这个程序了,点击运行MymisEndApplication,就可以在http://localhost:8082/这个地址访问系统了,只不过这时候系统里面什么也没有,它会给出一个登陆页面,这是Security插件自带的。


java从后端到全栈 java后端转全栈开发_配置文件_04

默认登录界面

3.代码和包的结构

在Java代码包srcmainjavacom.yourname下面,创建如下代码包:

  • bean,各类实体类
  • config,关于SpringBoot相关的各种配置类
  • controller,各种Controller类,是前端访问后端的入口类
  • mapper,MyBatis的Mapper类
  • service,各种服务类,一般来说对应Mapper类
  • utils,系统内的工具类

MymisEndApplication单独放在外面。

在资源文件夹srcmainresources下面有如下分布:

  • static文件夹,用来放置静态资源,因为本系统前后端分离,所以这里留空
  • templates文件夹,用来放置后端模板,这里也留空
  • application.properties文件,系统配置文件
  • mybatis-config.xml文件,Mybatis的配置文件

在测试文件夹srctest中,包的分步与Java代码包一一对应。

根目录下还有如下文件:

  • gitignore,git忽视文档配置,一般不用修改
  • mvnw和mvnw.cmd文件,maven的相关文档,一般不用修改
  • mymis_end.iml,IntelliJ的项目配置文件,不要手动修改
  • pom.xml,SpringBoot使用的Maven配置文件
  • mymis.sql,我提供的数据库建表文件,运行后即可建立本系统所需的数据库

4.修改pom.xml

在IntelliJ中使用MyBatis有一个坑,它在编译运行时,不会把Mapper类的XML配置文件拷贝到target目录中,导致运行出错,在pom中添加如下配置可以解决此问题:


<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
        <!--解决idea不自动将xml配置文件拷贝到target目录中的问题-->
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>
    </build>


5.最基本的请求响应代码

至此后端架构就基本上搭建起来了,首先要考虑三个问题:

1)如何通过用户名密码登录

2)如何响应url的请求

3)如何返回请求到前端浏览器

为简单演示如何解决以上三个问题,在系统中添加三个类:

SimpleSecurity:用来测试的权限配置类,它接收用户名密码,并调用一个权限管理类进行验证;

BackdoorAuthenticationProvider:用来测试的权限管理类,它实际上提供了一个后门,对于特定的用户名,直接通过验证;

SimpleController:Controller类,它接收来自特定url的访问,调用相应的方法,并返回信息。

用一张图来说明流程:


java从后端到全栈 java后端转全栈开发_spring_05

访问流程

添加完这些类后,点击运行,访问http://localhost:8082/hello,会给出登录页,在登录页中输入alex/任意密码,则可以得到一个页面,页面上是“Hello, MyMIS!”,表明后端已经成功响应了请求。

值得说明的是,如果SpringBoot中没用应用Security,则访问流程会省略掉鉴权的步骤,直接调用Controller类。关于Security的具体用法,会在后续章节中详细介绍,或者你也可以先看我的系列文章:Alex Wang:Spring Security零基础入门之一。

下一篇将在系统中添加实体类,但是实体类是依赖数据库的,因此会先介绍如何设计MySQL数据库架构。

6.学习资料

SpringBoot官网:Spring Projects

SpringBoot-Learning:程序猿DD/SpringBoot-Learning

SpringBoot中文索引(从这里开始比较好):Spring Boot 中文导航