使用SpringBoot2.0搭建企业级应用开发框架(一)基础框架生成

  • 前言

Spring一直是很火的一个开源框架,很多中小企业都使用Spring家族的框架进行企业开发,比如我们公司一直在使用以SpringMVC为核心的框架进行各种应用开发。用SpringMVC开发过应用的小伙伴应该都对该框架搭建步骤的繁琐、配置文件的繁杂感到头疼,就算用Freemarker等模板引擎实现框架快速生成,解决搭建问题,但配置文件等依然是一个不小的困扰。

在过去一段时间里,SpringBoot在社区中热度很高,所以决定使用SpringBoot搭建一套适合我们公司业务的企业级开发框架。

  • 目标

使用SpringBoot创建支持企业日常开发的框架,数据库使用MySQL,Druid管理连接池,支持多数据源,MyBatis执行CRUD操作,用LogBack记录应用日志。为方便开发,使用 MyBatis提供的generator工具生成通用mapper及实体。使用SpringSecurity实现资源权限管理,实现前后端分离,提供 REST风格的接口

  • 起步

1、快速生成一个SpringBoot应用

访问http://start.spring.io/,这是spring官方提供的快速生成方式。进入页面后,选择maven构建工具,java开发语言,springBoot版本选择2.0.3(稳定版)

选择完后点击Generate Project,生成示例,会直接弹出下载,保存后解压即可

2、导入项目

打开idea或eclipse,本文用idea示范,导入刚才解压的项目

导入后,项目初始目录如下图:

DemoApplication.java:一个带有main()方法的类,用于SpringBoot的启动

application.properties:一个空的properties配置文件,可基于需要添加配置

DemoApplicationTest.java:一个空的Junit测试,后续会对测试模块做详细说明

pom.xml:Maven构建说明文件

#下面文件基本不会需要你知道怎么用,只要知道他们是干什么的即可

.gitignore:开发中不需要加入到git管理的过滤配置

mvnw、mvnw.cmd:来自于Maven wrapper的分别用于Linux和Windows的文件

demo.iml:包含了项目依赖的所有jar包

3、添加web支持

此时生成的是一个Java项目,要作为web项目使用,还需要初始化web组件,在pom文件中添加支持web的模块

<!-- 添加支持web的模块 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

pom.xml文件中默认有两个模块:

spring-boot-starter:核心模块,包括自动配置支持、日志和YAML

spring-boot-starter-test:测试模块,包括JUnit、Hamcrest、Mockito

4、测试

引入web模块后,运行DemoApplication类即可启动项目,但此时项目中什么也没有,为方便测试,先新建一个TestController.java

@RestController
@RequestMapping("/test")
public class TestController {
    @RequestMapping("/hello")
    public String hello(){
        return "hello SpringBoot";
    }
}

@RestController 等价于@Controller+@ResponseBody的结合,使用这个注解的类里面的方法都以json格式输出;

在SpringMVC中我们需要配置需要被扫描的Controller包,SpringBoot默认扫描启动类(DemoApplication.java,即添加@SpringBootApplication注解的类)所在的包以及下级包里的所有bean,建议将启动类放在最外层包下

编写完成后,运行 DemoApplication启动项目,访问localhost:8080/test/hello,查看效果如下: 

springBoot默认使用8080端口,此处因为我运行2个项目所以将示例的端口改为9090,修改方法如下

在application.properties中添加:

server.port=9090

  • 改进

1、添加热启动

在日常开发中,我们会在调试过程中不断修改后台代码,就需要不停重启服务,很影响开发效率,SpringBoot对调试的支持很好,修改后可立即生效,只要在pom文件中添加该依赖即可:

<!-- 添加热启动 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>

该模块在完整的打包环境下运行的时候会被禁用。如果你使用java -jar启动应用或者用一个特定的classloader启动,它会认为这是一个“生产环境”

2、使用YAML非标记语言

我们习惯使用.properties文件写json格式的配置,但随着配置的增加以及配置内数据结构变得复杂,.properties的可读性会变得越来越差,所以我们改用设计目标就是为了方便人类读写的YAML格式的配置文件

首先我们先删除掉原来的application.properties文件,在原目录下新建application.yml文件即可(在上文中有提到SpringBoot默认支持YAML)

例如刚才的修改端口配置,在.yml文件中写为

server:
   port: 9090

 第一次接触YAML会遇到一些坑,比如莫名奇妙配置不生效,是因为YAML格式有严格的的语法规则

  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进时不允许使用Tab键,只允许使用空格
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  • kye-value的关系使用冒号代表,格式为key: value,注意冒号后面要加一个空格,不然解析不了
  • #表示注释,从这个字符到行尾,都会被解析器忽略

关于YAML支持的数据结构,对于不复杂的业务来说运用不到,需要了解的可以去看一下https://blog.csdn.net/michaelhan3/article/details/69664932

猜你喜欢

转载自blog.csdn.net/mxxrgxg/article/details/81134057