Springboot 完整搭建快速入门,必看!
前言
手把手教你Springboot微服务项目搭建快速入门,通过本文学习Springboot的搭建快速入门,掌握微服务大致的配置服务,后续将会继续将核心组件引入到项目中,欢迎关注,点赞,转发。
Springboot项目搭建将会从以下几个方面进行项目搭建快速入门
一、项目创建
新建Maven项目
根据上面操作即可完成项目搭建
二、pom.xml依赖添加
接下来在pom.xml引入springboot相关依赖
引入Springboot相关依赖,完成对项目的依赖配置。
三、新建数据库表
首先建一张User数据库表
1. 这里用navicat数据库链接工具
2. 新建一个springboot数据库(可自行定义)
3. 创建建表语句:
四、新建App.java项目启动类
五、新建Controller
行App,在浏览器输入:localhost:8080/hello,发现“hello spring-boot”说明第一步部署成功。
六、集成MyBatis
1. 在pom.xml文件中引入mybatis 和 数据库(这里用mysql)的依赖
生成mapper
1. 在resources目录下,新建一个application.properties(这里用properties,有兴趣小伙伴可以使用yml文件,这里名字只用application.properties,不要用其他,否则识别不出),增加如下内容:
2. 创建好对应的model、dao、mapping文件夹,准备MyBatis的生成文件generatorConfig.xml
3. 在pom.xml文件里面引入generator的plugins
4. 运行generatorConfig.xml文件,生成对应的model、dao、mapping文件,运行方式如下:
(用这种方式是避免开发人员找不到运行的方式)
5. 运行后,可以得到下图结果
七、UserMapper.java文件中新增登陆方法:
1. 新增登陆方法
2. 对应UserMapping.xml文件
八、 新建service实现方法
1. IUserService.java 接口
2. UserServiceImpl.java实现类
3. UserController.java类中增加login和register方法
启动App.java,并运行:
在浏览器上输入:localhost:8080/register?username=deer&password=123,显示“注册成功”
在浏览器上输入:localhost:8080/login?username=deer&password=123, 显示“登陆成功”
以上就完成了后台的Controller、Service、Dao之间的交互
九、实现事务支持
修改IUserService接口,增加一个新增batchAdd方法,在UserServiceImpl增加相应实现类,在实现类中故意产生一个被0整除得异常
1. IUserService.java接口中增加batchAdd抽象方法
2. UserService.java类中实现batchAdd()方法
3. 重新运行App.java,在浏览器输入:
localhost:8080/batchAdd?username=enjoy&password=123
可以发现在浏览器上出现
然后检查数据库,发现表里面已经产生了一个错误的数据,产生了事务不一致问题。
4. 添加事务支持:
在batchAdd方法上增加@Transactional注解
重启服务后,在浏览器上输入:localhost:8080/batchAdd?username=enjoy&password=123
浏览器还会继续报错,但检查数据库,并没有新增数据,由此可知事务问题已经得到了解决
十、全局异常
通过上面步骤,虽然已经解决了事务问题,但界面上出现这500错误,这对用户来说还是不友好。
一般在企业里面对这些异常一般都会统一捕获,由一个专门的异常处理类来统一处理。
1. 异常捕获
新建全局异常处理类GlobalExceptionHandler.java类
重启服务后,在浏览器上输入会出现异常的服务
localhost:8080/batchAdd?username=enjoy&passwd=123
界面返回:
2. 404页面处理
在浏览器上故意输错地址
localhost:8080/batchAddx?username=enjoy&passwd=123,后端并没有这服务,虽然已经做了相关的异常捕获,但浏览器还是显示了:
这个时候返回页面非常的不友好,要做404异常处理(其他异常代码一样)。
在配置这样错误页面的时候,以前是在WEB.XML中进行配置,而在这里,需要有个WebServerFactoryCustomizer的实例进行配置
3. 在前面建立的GlobalExceptionHandler,新建一个方法
4. 新建BaseController.java类
重启服务,在浏览器上输入
localhost:8080/batchAddx?username=enjoy&passwd=123
此时,页面返回“404,没有找到页面!”
十一、静态资源访问
静态资源:js, css, html, 图片,音视频等
静态资源路径:是指系统可以直接访问的路径,且路径下的所有文件均可被用户直接读取。
Spring Boot默认提供静态资源目录位置需置于classpath下,目录名需符合如下规则:
/static
/public
/resources
/META-INF/resources
1. 在resources目录下面建立static文件夹,在文件夹里面任意放张图片。
在地址栏上输入localhost:8080/enjoy.jpg,可以看到图片
十二、前端页面
1. 引擎模板
SpringBoot 推荐使用模板引擎来渲染html,如果你不是历史遗留项目,一定不要使用JSP,常用的模板引擎很多,有freemark,thymeleaf等,其实都大同小异
其中springboot 强烈推荐的是用thymeleaf
pom文件种添加thymeleaf的支持:
2. 新建Controller
Springboot默认的模板配置路径为:src/main/resources/templates
在resources目录里面新建一个templates目录,在目录里面新建testThymeleaf.html文件
在浏览器上输入:localhost:8080/tpl/themeleaf,可以看到页面。
十三、集成Swagger2 构建API文档
1. Swagger2 的作用
①. 随项目自动生成强大RESTful API文档,减少工作量
②. API文档与代码整合在一起,便于同步更新API说明
③. 页面测试功能来调试每个RESTful API
修改pom文件,添加swagger2的相关依赖
2. 新建一个swagger的配置类SwaggerConfig.java
3. 新建Controller用于显示相关接口
访问:http://localhost:8080/swagger-ui.html
如何使用呢?
以上就是swagger2的配置和使用。
十四、日志集成
在springboot中默认使用的日志工具是logback,不过在提及具体的日志工具之前要提一个名词,这个名词就是slf4j(Simple Logging Facade For Java)
百度百科解释
https://baike.baidu.com/item/slf4j/6408868
slf4j不是具体的日志解决方案,它有点类似于jdbc,使用了门面模式,是一个针对各类日志的抽象实现,既然是抽象的日志实现,在springboot中肯定不需要额外导入。
注意:spring-boot-starter中就提供了对spring-boot-starter-logging的依赖
在spring-boot-starter-logging中可以看到以及集成了slf4j与具体实现logback的默认支持
1. 修改UserController
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private final Logger logger = LoggerFactory.getLogger(UserController.class);
在浏览器上输入:localhost:8080/hello,可以看控制台日志的输出
2. 日志级别
修改controller 把日志的输出改成
logger.debug("这个一个hello日志");
这个时候重启,再调用,发现后台并不会有任何输出,这原因是日志级别在作祟
默认情况下,Spring Boot 配置的是INFO 日志级别,也就是会输出INFO级别以上的日志(ERROR, WARN, INFO)。
如果需要 Debug 级别的日志。在 src/main/resources/application.properties 中配置。
debug=true
此外,配置 logging.level.* 来具体输出哪些包的日志级别。
例如
logging.level.root=INFO
logging.level.org.springframework.web=DEBUG
logging.level.cn.cansluck.controller=DEBUG
这个时候,包括springframework.web以及cn.cansluck.controller的debug日志都可以输出来了
3. 日志文件
一般情况下,springboot日志只会输出到控制台,并不会写入到日志文件,但是,在一些正式环境的应用中,我们需要通过在 application.properites 文件中配置 logging.file 文件名称和 logging.path 文件路径,将日志输出到日志文件中。
logging.path = /var/tmp
logging.file = xxx.log
logging.level.root = info
注意:
如果只配置 logging.path,在 /var/tmp文件夹生成一个日志文件为 spring.log。如果只配置 logging.file,会在项目的当前路径下生成一个 xxx.log 日志文件。
这里有一个坑,logging.path 和logging.file都配置了,只会有logging.file生效,所以,如果要指定日志生成的具体位置使用logging.file 配置就好
在application.properties中配置
logging.file =D:\\log\\enjoy.log
这样在F盘的相应位置出现日志文件
3. log4j2
在spring-boot-dependencies POMs中搜索spring-boot-starter-log4j2
发现Spring boot父Pom中自己提供了这个依赖,于是我们加入如下jar依赖:
修改pom.xml文件
注意: 由于默认使用logback在扩展log4j2之前先要把logback移除
日志使用跟上面logback一样。
十五、使用AOP统一日志处理
为了防止在工作中经常在代码中加入大量的日志处理代码,在实际项目开发中,一般使用AOP统一完成日志处理工作
1. 修改pom文件,引入springboot对aop的支持
2. 新增AOP日志处理类
通过访问Controller可以从日志看到,AOP切面方法已经生效
总结
本文通过图文形式,学习Springboot快速入门,包括项目创建、Springmvc集成、MyBatis集成配置、事务集成配置、全局异常配置、Swagger2集成配置、AOP统一日志处理,将整个流程大概介绍了一遍,让想了解和学习Springboot的小伙伴能够对整体流程有个大概了解,也希望能够利用自己空闲时间按照上面流程完整操作一遍,可以加深自己的理解和印象。如有疑问欢迎评论留言,小编会及时回复哦~喜欢的小伙伴动动手指点个赞、收藏吧!
更多精彩敬请关注公众号
Java极客思维
微信扫一扫,关注公众号
Springboot 完整搭建快速入门,必看!的更多相关文章
- Java编程学习知识点分享 入门必看
Java编程学习知识点分享 入门必看 阿尔法颜色组成(alpha color component):颜色组成用来描述颜色的透明度或不透明度.阿尔法组成越高,颜色越不透明. API:应用编程接口.针对软 ...
- SpringBoot系列: RestTemplate 快速入门
====================================相关的文章====================================SpringBoot系列: 与Spring R ...
- Liunx新手入门必看
安装CentOS(Linux的一个常用发行版本,互联网公司经常使用这个发行版)用到的软件: VMware_workstation_full_12.5.2.exe 虚拟机软件,虚拟机由这个软件安装.管理 ...
- springboot笔记02——快速入门quickstart
前言 学习一个新的框架,往往会用一个quickstart快速入门,这次就写一下springboot的quickstart程序. 开发环境 JDK 1.8 Springboot 2.1.6 Maven ...
- SpringBoot简介与快速入门
一.SpringBoot简介 1.1 原有Spring优缺点分析 1.1.1 Spring的优点分析 Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE ...
- SpringBoot整合ActiveMQ快速入门
Spring Boot 具有如下特性: 为基于 Spring 的开发提供更快的入门体验 开箱即用,没有代码生成,也无需 XML 配置.同时也可以修改默认值来满足特定的需求. 提供了一些大型项目中常见的 ...
- uni-app高分开源电影项目源码案例分析,支持一套代码发布小程序、APP平台多个平台(前端入门必看)
uni-app-Video 一个优秀的uni-app案例,旨在帮助大家更快的上手uni-app,共同进步! Features 代码编写简洁,注释清晰,快速入门必备: 支持在线模糊搜索: 程序类目懒 ...
- STM32环境搭建/学习观点/自学方法 入门必看
文章转自armfly开发板V4软件开发手册,分享学习~ 今天有幸看到armfly的开发板软件开发手册,开头的基础知识,真的很有用,还好有看到,一切都不迟,感悟很多,摘抄部分,学习分享~ 关于开发环境的 ...
- SpringBoot框架:快速入门搭建运行一个应用程序(一)
一.环境配置 Java环境:1.8版本 开发工具:IntelliJ IDEA 二.简单应用 1.创建项目 选择创建的项目类型为Spring Initializr,Project SDK选择1.8版本的 ...
- Mysql快速入门(看完这篇能够满足80%的日常开发)
这是一篇mysql的学习笔记,整理结合了网上搜索的教程以及自己看的视频教程,看完这篇能够满足80%的日常开发了. 菜鸟教程:https://www.runoob.com/mysql/mysql-tut ...
随机推荐
- psql-01基本介绍
安装与启动 安装: apt-get install postgresql / yum install postgresql.XXX; 启动: mac下直接打开 linux service postgr ...
- JavaScript的My97Date日期工具类的使用
开发人员最喜欢的事情就是有工具然后拿来直接使用(. ~ .) 使用截图: 1.设置input标签 2.根据其DEMO文件,引入,进行事件处理 3.效果如图 4.效果如图 代码: <!DOCTYP ...
- Hbase基础操作
$HBASE_HOME/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter 'tablename'
- TCP 粘包/拆包问题
简介 TCP 是一个’流’协议,所谓流,就是没有界限的一串数据. 大家可以想想河里的流水,是连成一片的.期间并没有分界线, TCP 底层并不了解上层业务数据的具体含义 ,它会根据 TCP 缓冲区 ...
- java中ReentrantReadWriteLock读写锁的使用
Lock比传统线程模型中的synchronized方式更加面向对象,与生活中的锁类似,锁本身也应该是一个对象.两个线程执行的代码片段要实现同步互斥的效果,它们必须用同一个Lock对象. 读写锁:分为读 ...
- [Webpack 2] Hashing with Webpack for long term caching
Leveraging the browser cache is an important part of page load performance. A great way to utilize t ...
- JAVA的IO运用
IO OF JAVA想写好一篇关于JAVA的IO的文章不容易,因为它涉及的东西很多难以写得有深度和有思路.我虽不才但也写.这篇文章有我个人不少的见解,虽然涉足计算机不深但我不想用一大堆这个可能那个可能 ...
- iOS关于UITabView和UIAlertController,UIAlertAction以及UINavigation,值修改的传递页面推送
关于UITabView和UIAlertController,UIAlertAction以及UINavigation,值修改的传递 集合嵌套集合的操作 声明 两个必须的的代理 实现部分代码 - (voi ...
- 前端MVC Vue2学习总结(一)——MVC与vue2概要、模板、数据绑定与综合示例
一.前端MVC概要 1.1.库与框架的区别 框架是一个软件的半成品,在全局范围内给了大的约束.库是工具,在单点上给我们提供功能.框架是依赖库的.Vue是框架而jQuery则是库. 1.2.AMD与CM ...
- 3、zookeeper 集群模式搭建
服务器 1:192.168.1.81 端口:2181.2881.3881 服务器 2:192.168.1.82 端口:2182.2882.3882 服务器 3:192.168.1.83 端口:2 ...