使用SpringBoot2.0搭建企业级应用开发框架(一)基础框架生成 - Go语言中文社区

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


前言

目标

起步

1、快速生成一个SpringBoot应用

2、导入项目

3、添加web支持

4、测试

改进

1、添加热启动

2、使用YAML非标记语言


  • 前言

Spring一直是很火的一个开源框架,很多中小企业都使用Spring家族的框架进行企业开发,比如我们公司一直在使用以SpringMVC为核心的框架进行各种应用开发。用SpringMVC开发过应用的小伙伴应该都对该框架搭建步骤的繁琐、配置文件的繁杂感到头疼,就算用Freemarker等模板引擎实现框架快速生成,解决搭建问题,但你可能本来只需要很少的功能,却拿到了一个体积很大的应用。

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

  • 目标

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

  • 起步

1、快速生成一个SpringBoot应用

我平时最常用的生成方法有两种,第一种,在IDEA中通过Spring Initializr生成,这种方式后续熟练之后开发中最常用,不过我们这里说另一种方法。

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

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

PS:点击Switch to the full version 会弹出maven依赖添加的选项,刚开始学习SpringBoot的话就不要选这个里面的东西了,一步一步来

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 {
    @GetMapping("/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>

<optional>true</optional>去掉热部署会失效,原因不明;

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

生产环境不建议使用热部署

 这时我们已经添加了class文件的热部署功能,还需要添加静态资源文件的热部署功能(html,js等)

在IDEA中,点击file→Settings,在设置页面找到Build,Execution,Deployment→Compiler,勾选Build project automatically

点击确定后,按下Ctrl+Shift+Alt+/,弹出层选择Registry,在出来的页面勾选第一条即可

 这样我们不管是修改java文件、配置文件还是静态资源文件都不需要重启了

2、使用YAML非标记语言

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

首先我们先删除掉原来的application.properties文件,在原目录下新建application.yml文件即可(在上文中有提到SpringBoot默认支持YAML,对应的依赖包为 spring-boot-starter 下的 snakeyaml

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

server:
   port: 9090

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

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

关于YAML支持的数据结构,对于不复杂的业务来说运用不到,需要了解的可以去看一下,链接:YML语言格式

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/mxxrgxg/article/details/81134057
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-01 22:47:09
  • 阅读 ( 887 )
  • 分类:Go Web框架

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢