SpringBoot系列一
文章平均质量分 76
使用SpringBoot1.5为基础,涉及springboot入门以及常见开发问题...
cp026la
这个作者很懒,什么都没留下…
展开
-
SpringBoot>24 - 项目启动资源初始化CommandLineRunner
前言:Springboot 项目启动的时候提前初始化项目所需的数据。springboot 提供了CommandLineRunner 接口,使用非常简单,只需实现run方法即可。个人学习总结:链接:【springboot、springcloud、docker 等,学习目录】使用案例:1、构建springboot基础项目。2、自定义类实现 CommandLineRunner 接口,实...原创 2020-01-29 14:36:05 · 169 阅读 · 0 评论 -
SpringBoot>23 - 2.0版本WebMvc配置
前言:Springboot的starter封装了很多东西,包含了MessageConverter、ViewResolver等web的配置,若需要自定义。在之前1.5版本中自定义javaBean继承WebMvcConfigurerAdapter类,但是在2.0版本中此类标记过时,需要实现WebMvcConfigurer接口实现自定义配置。一、1.5.X版本回顾:配置类继承WebMvcCon...原创 2019-01-17 09:56:06 · 1381 阅读 · 1 评论 -
SpringBoot>22 - 项目打包
前言:传统的SpringMVC项目在tomcat中运行,我们更新代码只需要替换对应的.class文件即可。但 SpringBoot 项目一般会以jar形式运行,代码都是一个整体,修改局部代码也要替换整个jar包,这在某些jar包偏大的场景下不方便。一、默认打包方式:1、pom插件: <build> <原创 2019-01-17 09:38:27 · 566 阅读 · 0 评论 -
SpringBoot>21 - 集成BeetlSQL做持久层框架
简介:常见的持久层框架有MyBatis、Spring Data Jpa,BeetlSQL同样也是一款优秀的持久层框架。本章基于 springboot2.0 集成BeetlSQL。官网地址: http://ibeetl.com/Beetl: 功能齐全、性能超高、语法简单的模板引擎,而BeetlSQL基于Beetl实现,本章不涉及到Beetl的语法,请到官网学习。BeetlSQL优势: (来自...原创 2019-01-17 09:13:51 · 1891 阅读 · 1 评论 -
SpringBoot>20 - 集成Dubbo构建分布式架构(二)
简介:Dubbo默认的远程调用超时时间为 1 秒,超时重试次数为2次(加上原本的一次总共3次),而在实际项目中不允许超时的场景很多, 例如,添加数据的业务中重试会避免重复数据、发送短信的业务可能重复发送等。本章在【上一章】的基础上参看官网引入dubbo的几种配置方式、引入超时重试的配置。推荐xml配置方式。官网地址(重要):http://dubbo.apache.org/en-us/doc...原创 2019-01-16 17:54:25 · 337 阅读 · 0 评论 -
SpringBoot>19 - 集成Dubbo构建分布式架构(一)
简介:当系统的并发达到一定数量的时候传统的模式已经不能够满足要求了,这时就需要将项目拆分成若干个子项目,独自完成各自的功能,在开发上,不同的团队可以负责不同的子项目。本章是在SpringBoot1.5上利用Dubbo完成基于SOA的分布式系统搭建。一、相关概念:分布式架构: 多个子系统相互协作通讯完成整体业务。集群: 同一个工程部署多台服务器。SOA: Service Oriented ...原创 2019-01-16 17:08:48 · 592 阅读 · 0 评论 -
SpringBoot>18 - 使用 @Async 异步调用
简介:异步调用其实就是使用多线程的方式执行另外一段程序,刚开始学习多线程的时候听到最多的就是实现 Runable 接口、继承 Thread 类。而 Springboot 中提供了实现异步调用的注解。同步调用、异步调用、回调的区别:1、同步调用:阻塞式调用,最常见,按照业务代码从上到下、从左到右一步一步执行,遇 到卡壳只能等待或者程序挂掉。2、异步调用:非阻塞式调用,相对于同步调用,不...原创 2019-01-16 15:29:58 · 730 阅读 · 1 评论 -
SpringBoot>17 - 集成Druid 作为数据库连接池
简介:用户的每一次请求几乎都会访问数据库,访问数据库需要向数据库获取链接,而数据库创建连接是需要消耗资源的。数据库连接也是一种资源、使用数据库连接池等都是十分有必要的。本章小结一下Druid数据库连接池在SpringBoot1.5中的使用。Druid 学习地址: https://github.com/alibaba/druid/wiki/FAQ 非常详细数据库连接池:C3P0、DBCP、...原创 2019-01-16 15:13:05 · 335 阅读 · 1 评论 -
SpringBoot>16 - 使用 @Scheduled 实现定时任务
简介:实现定时任务的方式很多,基于JDK的Timer、Quartz等等,本章介绍 SpringBoot1.5 中Spring Task实现定时任务,非常方便。项目构建:springboot web项目构建完就默认内置了@Scheduled 定时任务。1、开启定时支持,在启动类上添加注解@EnableScheduling // mapper 接口类扫描包配置@MapperScan("...原创 2019-01-16 14:34:40 · 787 阅读 · 1 评论 -
SpringBoot>15 - 自定义注解实现权限控制
简介:较原始的项目中使用的是JSP页面标签结合后台方法上注解配合实现权限控制,目前前后端完全分离开发已经是主流模式,大型的项目中可能会用到 shiro 或者 spring security 做安全校验,但是在小型项目中可以使用自定义注解达到权限控制的要求。误区:很多人认为权限控制就是控制不同用户在页面上拥有不同的功能(即不同的按钮),这是用户体验范围,这种情况下,只要知道后端地址,还是...原创 2019-01-16 14:11:46 · 9896 阅读 · 2 评论 -
SpringBoot>14 - 整合FastJson
简介:Springboot已经集成了自己的JSON规范,也可定义其他的规范。FastJson是目前Json解析比较快的阿里开源的组件,使用比较广泛,本章将FastJson集成到 springboot1.5 中。FastJson消息转换器:1、引入依赖:选择新版的依赖:https://mvnrepository.com/artifact/com.alibaba/fastjson<...原创 2019-01-16 12:34:52 · 629 阅读 · 0 评论 -
SpringBoot>13 - AOP统一日志管理
简介:System.out.println("…")、log.info("…")是不是看起来很亲切,在每个方法中使用上述两种方式获取日志,在大项目大公司是是绝对不允许的。正确的做法是使用统一日志管理,即在每个请求前后根据业务需要对数据进行日志记录,可以使用拦截器、过滤器、原创 2019-01-16 11:30:05 · 855 阅读 · 2 评论 -
SpringBoot>12 - Redis作为消息中间件的使用。
简介:我们熟悉的消息中间件有rabbitmq、kafka 等等,redis一般用作缓存,也可以作消息中间件使用。本章将介绍springboot1.5集成Redis后作为消息中间件的使用。集成Redis基础的知识请参看上一章【SpringBoot>11 - 集成 Redis】Redis 作消息中间件使用1、新建消息封装实体类:/** * @Auther: xf * @Date: 2...原创 2019-01-16 11:06:04 · 3356 阅读 · 1 评论 -
SpringBoot>11 - 集成 Redis
简介:Redis 作为一个nosql 数据库,在项目中的作用是非常重要的。本章将介绍 springboot1.5 集成 Redis的基础知识。学习链接: Redis中文网:http://www.redis.cnRedis的下载,安装,以及客户端在这里都可以找到对应入口。可自行下载安装,我使用的是阿里云docker 镜像安装,Docker 系列会涉及。一、Redis的五种数据类型(来自官...原创 2019-01-16 10:28:44 · 855 阅读 · 3 评论 -
SpringBoot>10 - 集成Swagger2
简介:本章介绍SpringBoot1.5集成Swagger2 生产在线的API接口文档。1、pom依赖: <!-- swagger2 依赖 --> <dependency> &a原创 2019-01-15 23:56:43 · 335 阅读 · 0 评论 -
SpringBoot>09 - 过滤器、监听器、拦截器,Aspect切片
简介:本章介绍拦截器、过滤器、切片对请求拦截的使用与区别,以及监听器的简单使用过滤器、拦截器、切片拦截请求的对比:相同点: 都可以对请求进行拦截。不同点:1、过滤器对请求的拦截只能获取到原始的Request 和 Response 的信息。2、拦截器对请求的拦截可以获取原始的Request、Response和所有的controller及方法名,但无法获取方法的参数信息。3、Aspect...原创 2019-01-15 23:43:50 · 1022 阅读 · 1 评论 -
SpringBoot>08 - 配置文件、基本注解使用
简介:SpringBoot采取的是约定优于配置的原则,旨在无需太多的配置快速启动,专注于业务代码的开发,提高开发效率,但有时个性化的配置、自定义的配置也是需要的。本章介绍部分自带配置属性、自定义属性以及读取方式,开发中常见注解的使用。一、配置文件:配置文件格式 分 application.properties 和 application.yml(官方推荐使用)。1、常见的自带属性:#...原创 2019-01-15 18:36:55 · 1069 阅读 · 1 评论 -
SpringBoot>07 - 事务处理
扯淡:复杂的业务逻辑中一个可能需要多次操作数据库,要保证一个Service 方法中多个 dao 的操作同时成功(失败),事物的配置就很重要了。大概分三种情况。1、分布式事物:即多模块中事物,分布式事物建议是可以避免就避免,可以使用消息中间件处理,但也不能完全解决。2、多线程事物:参考:https://blog.csdn.net/kongkongyanan/article/detail...原创 2019-01-15 17:54:30 · 859 阅读 · 1 评论 -
SpringBoot>06 - @Valid参数校验
扯淡:刚开始写代码的时候对参数的校验要么不做、要么写很多类似 if( xx == null){ … }的语句,总想参数校验可以交给前端处理(很机智),服务端对参数的校验同样重要。参数校验:springboot需要引入spring-boot-starter-validation(使用Hibernate Validator 框架提供验证功能) 依赖进行参数校验,由于本项目中已经引入了spr...原创 2019-01-15 16:59:48 · 1814 阅读 · 1 评论 -
SpringBoot>05 - 全局异常处理
前言:开发中异常的处理必不可少,常用的就是 throw 和 try catch,这样一个项目到最后会出现很多冗余的代码,使用全局异常处理避免过多冗余代码。全局异常处理:1、pom 依赖(延续上一章代码):<dependencies> <!-- Spring Boot原创 2019-01-15 16:40:39 · 400 阅读 · 0 评论 -
SpringBoot>04 -日志配置
简介:日志在项目中是非常重要的,本文介绍了springboot默认的日志配置,及使用logback 自定义日志配置。日志管理:springboot默认集成了 Commons Logging ,只需在配置文件中配置即可:# 日志级别 TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF 默认 INFO# 屏蔽某个或者多个包下不输出日志也不记录日志到文件...原创 2019-01-15 16:17:56 · 1159 阅读 · 2 评论 -
SpringBoot>03 - lombok 的配置
简介:lombok 可以通过简单的注解编译的时候生成一些必须有的代码,最常见的就是省略JavaBean 的 Getter/Setter 方法,最终达到的目的(@Getter和@Setter为例):源码中没有 get、set 方法,编译生成的字节码文件中有 get、set 方法。日志在项目中是非常重要的,本文介绍了springboot默认的日志配置,及使用logback 自定义日志配置。Lo...原创 2019-01-15 15:59:54 · 1317 阅读 · 1 评论 -
SpringBoot>02 - 整合 MyBatis
简介:目前,国内大部分公司都使用 MyBatis作为持久层框架。本章整合MyBatis,在上一章的基础上进行扩展。废话少说,直接上代码。pom 主要依赖如下:<dependencies> <!-- Spring Boot Web 依赖 --&amp原创 2019-01-15 15:30:23 · 535 阅读 · 0 评论 -
SpringBoot>01-第一个应用--HelloWorld
简介:此章介绍一个最基本的SpringBoot Web 应用。体验快速开发、无配置,以及基本的注解。环境:1、JDK 1.82、开发工具 IDEA 或 STS(下载地址:https://spring.io/tools)3、Maven (3.3.9)注意配置阿里云镜像,具体配置根据自身开发要求查阅资料。快速构建:通过官网地址快速构建:https://start.spring.io/...原创 2019-01-15 15:07:50 · 1843 阅读 · 2 评论