小白的springboot之路(一).环境搭建.第一个实例 0- 前言 Spring boot + spring cloud + vue 的微服务架构技术栈,那简直是爽得不要不要的,怎么爽法,自行度娘,我们不废话,好了,下面直接上酸菜: 1- 环境搭建 涉及工具: jdk jdk1.8.0_144 idea 2019.1.3 maven3.6.0 1.1- 安装JDK1.8:讲bin目录路径加入系统环境变量(方法自行度娘) 1.2- 安装idea并和谐掉:(和谐方法自行度娘,注意:idea201…
0-前言 事务管理对于企业级应用来说必不可少,用来确保数据的完整性和一致性: 1-开启事务 spring boot支持编程式事务和声明式事务,用声明式事务即可: spring boot开启事务非常简单,只需要在类或者方法上添加 @Transactional 即可(添加到类上,类中所有public方法均开启事务,影响性能,不要这么用,请添加到方法上) 为什么这么简单?因为在spring boot中,已经默认对JPA.JDBC.mybatis开启了事务,在引入他们依赖的时候就已经默认开启了事务,至于…
0-前言 在有些系统中,比如网站,往往需要支持多国语言,英文版中文版什么的,这个其实也不难: 今天我们就来介绍spring boot中用i18n在后端支持多语言: 当然,也可以直接在前端用i18n直接支持多语言,这个我们以后在前端系列中再介绍: 1-实现 简单6步,轻松实现: 1-1.增加多语言文件 在resources中,新增static/i18n文件夹,在里面新建新建三个文件: messages.properties(默认的多语言文件) messages_zh_CN.properties(中…
0-前言 现在的项目开发,基本都是前后端分离,后端专注于API接口开发,都需要编写和维护API接口文档.如果你还在用Word来编写接口文档,那你就out了,这个时候,当当当当~神兵利器swagger隆重出场!Swagger根据项目自动生成API文档,可以帮助我们更好的编写和维护API文档.Spring boot集成swagger那是必须的,好不好用,谁用谁知道. 1-springboot 集成swagger swagger集成swagger很简单,只需几步即可: 1-1.添加maven依赖: <…
0.前言 1.什么是AOP AOP(面向切面编程),是一种横切技术,是对OOP的补充和完善: 使用AOP的横切,可以对系统进行无侵入性的日志监听.事务.权限管理等: 思想上跟拦截器其实类似;拦截器是对action进行拦截处理,AOP是对切面进行拦截处理,其实切面也属于一种action集合: AOP可以很好解耦: 2.AOP的组成 Aspect:切面: Join point:连接点: Advice:通知,在切入点上执行的操作: Poincut:带有通知的连接点: target:被通知的对象: AO…
0.前言 过滤器.监听器.拦截器在实际开发中经常需要用到,下面我们来介绍一下spring boot中如何使用: 一.------ 过滤器 ----- 1.作用: 过滤器是客户端与服务器资源文件之间的一道过滤网,可以帮助我们过滤一些不符合要求的请求.可以对服务器的资源请求(如图片.文件等)进行拦截以实现一些特殊功能以及给予特殊响应: 常用作session校验.判断用户权限.过滤敏感词汇.压缩响应信息.控制URL级别访问权限等 2.实现: 使用过滤器很简单,只需要实现Filter类,重写他的三个方法…
0-前言 项目中,文件服务必不可少,常用的有各云服务商的OSS服务(如阿里云OSS,腾讯云OSS,七牛云).自建(fastDFS.minio): 推荐:如果用云服务的话,阿里云OSS很方便,如果自建的话,minio无疑是首选: 这里我们来简单介绍阿里云OSS的使用,minio我们后面介绍: 1-实现 1-0.开通OSS,并获取到相关配置参数供程序使用 首先开通阿里云OSS,创建bucket.创建AccessKey,几分钟就搞定了,不会的具体百度下: 1-1.添加依赖 <!-- 1.集成阿里云OS…
0-前言 前后端分离.分布式集群,经常都会涉及到跨域访问,而浏览器基于同源策略,正常情况下是不能跨域的,这就需要我们解决跨域访问问题:spring boot解决跨域也比较简单: 1-CORS跨域解决方案 spring boot CORS解决跨域比较简单,只需要增加一个CORS的配置类即可:在config下新建一个配置类,代码如下: package com.anson.config; import org.springframework.context.annotation.Configurati…
0-前言 Druid阿里巴巴开源的一个java数据库连接池,是Java语言中最好的数据库连接池,Druid能够提供强大的监控和扩展功能:集成它能够方便我们对数据库连接进行监控和分析,下面我们来集成它: 1-集成druid 集成druid很方便,继续几步即可: 1-1.添加依赖: <!-- 6.集成druid--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-sprin…
0.前言 mybatis属于半自动的ORM,相比hibernate这种全自动的ORM,兼顾了性能与易用:目前企业项目中,基本都是mybatis的天下:今天就来整合mybatis与MySQL: 1.整合 1.-1.添加依赖: <!-- 集成mybatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starte…
0-.前言 在用mybatis开发项目中,数据库动辄上百张数据表,如果你一个一个去手动编写,比较耗费时间:还好,我们有mybatis-generator插件,只需简单几步就能自动生成mybatis的model.mapper和Dao文件,很方便: 题外话:注意,mybatis-generator的项目建议单独去建一个项目,生成model.mapper.dao后再根据需要拷到实际项目中去:不要集成到实际项目中,以免对实际项目造成影响,因为集成在项目中,一不小心生成了,全部覆盖了原来的文件,那你自己添…
0.前言 在项目中,缓存作为一种高效的提升性能的手段,几乎必不可少,Redis作为其中的佼佼者被广泛应用: 一.spring boot集成Redis 1.添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 2.配置文件增加Re…
0.前言 任何系统,我们不会傻傻的在每一个地方进行异常捕获和处理,整个系统一般我们会在一个的地方统一进行异常处理,spring boot全局异常处理很简单: 介绍前先说点题外话,我们现在开发系统,都是前后端完全分离的,后端只提供RESTfull API,禁止涉及任何界面,什么thymeleaf.JSP那些后端模板,是绝对禁止使用的,那些东西请扔垃圾箱,不要浪费大好青春去研究,那是堕落:前端则负责界面相关,常用Vue:如果公司还没前后端分离,还在thymeleaf还在前后端一起写,那你还是早做跳槽…
0.前言 日志记录对系统来说必不可少,spring boot中常用的日志组件有log4j.logback.log4j2,其中logback是spring boot默认的,已自带:选用log4j2就可以,其他的不必去关注: 一.集成log4j2日志组件 1.pom依赖中去除默认的logback日志框架: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boo…
0.前言 开发系统中,前后端分离,后端一般返回RESTfull  API,前端调用API构建UI,彼此分离.互相完全独立: 后台API中,我们一般返回结果码.提示信息.数据三部分内容,如图: 我们今天就来构建一个完整的前后端分离后端的API 一.RESTfull API构建 1.增加结果码接口 IErrorCode package com.anson.common.result; /** * @Author anson * @Description 1.结果码接口 * @Date 2019/12…
0.前言 MongoDB是一个高性能.开源的文档型数据库,是当前nosql数据库中最热门的一种,在企业中广泛应用:虽然前段时间更改了开源协议导致被很多企业舍弃,但主要是对云服务商影响较大,对我们来说其实没什么影响:下面介绍简单集成,高级用法以后详聊 一.启动MongoDB 1.在官网下载Windows压缩包,解压2.创建数据库存放地址,如:C:\data\db 3.在MongoDB的bin目录下创建bat文件,编辑写入:mongod --dbpath C:\data\db,保存, 然后,点击ba…
0.前言 用mybatis,那么分页必不可少,基本都是用PageHelper这个分页插件,好用方便: 1.实现 1.1.添加依赖: <!-- 3.集成 mybatis pagehelper--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version…
0-前言 mybatis plus是对mybatis的增强,集成mybatis plus后,简单的CRUD和分页就不用写了,非常方便,五星推荐: 1-集成 1-1.添加依赖 <!-- .集成mybatis-plus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version…
0-前言 集成swagger,有两种方式: 一种在前面已经介绍过了,直接集成官方的springfox-swagger2的方式,这种方式需要在配置类中配置 第二种方式是这里要介绍的方式,国人写的com.spring4all的方式,这种方式其实是对第一种方式的进一步封装, 只是把配置从配置类中配置提取到了在配置文件配置,看个人喜好了,你喜欢在配置文件中配置swagger基本属性的可以用com.spring4all 1-实现 简单4步轻松实现: 1-1.添加依赖: <!-- swagger -->…
问题:The bean 'xxx' could not be injected as a 'com.github.service.xx' because it is a JDK dynamic proxy 先说说问题的来源吧,当前这个问题是我在springboot配置事务时出现的,本来我搭建了一个springboot的web框架后,启动事务配置只需要如下两步即可完成:1.在启动类Application类上设置@EnableTransactionManagement,表示启动springboot事…
转自:https://blog.csdn.net/linzhiqiang0316/article/details/52638039 什么是事务? 我们在开发企业应用时,对于业务人员的一个操作实际是对数据读写的多步操作的结合.由于数据操作在顺序执行的过程中,任何一步操作都有可能发生异常,异常会导致后续操作无法完成,此时由于业务逻辑并未正确的完成,之前成功操作数据的并不可靠,需要在这种情况下进行回退. 事务的作用就是为了保证用户的每一个操作都是可靠的,事务中的每一步操作都必须成功执行,只要有发生异常…
200202-SpringBoot系列教程之事务传递属性 对于mysql而言,关于事务的主要知识点可能几种在隔离级别上:在Spring体系中,使用事务的时候,还有一个知识点事务的传递属性同样重要,本文将主要介绍7中传递属性的使用场景 I. 配置 本文的case,将使用声明式事务,首先我们创建一个SpringBoot项目,版本为2.2.1.RELEASE,使用mysql作为目标数据库,存储引擎选择Innodb,事务隔离级别为RR 1. 项目配置 在项目pom.xml文件中,加上spring-boo…
SpringBoot 系列教程之事务隔离级别知识点小结 上一篇博文介绍了声明式事务@Transactional的简单使用姿势,最文章的最后给出了这个注解的多个属性,本文将着重放在事务隔离级别的知识点上,并通过实例演示不同的事务隔离级别下,脏读.不可重复读.幻读的具体场景 I. 基础知识 在进入正文之前,先介绍一下事务隔离级别的一些基础知识点,详细内容,推荐参考博文 mysql 之锁与事务 1. 基本概念 以下基本概念源于个人理解之后,通过简单的 case 进行描述,如有问题,欢迎拍砖 更新丢失…
SpringBoot 系列教程之事务不生效的几种 case 前面几篇博文介绍了声明式事务@Transactional的使用姿势,只知道正确的使用姿势可能还不够,还得知道什么场景下不生效,避免采坑.本文将主要介绍让事务不生效的几种 case I. 配置 本文的 case,将使用声明式事务,首先我们创建一个 SpringBoot 项目,版本为2.2.1.RELEASE,使用 mysql 作为目标数据库,存储引擎选择Innodb,事务隔离级别为 RR 1. 项目配置 在项目pom.xml文件中,加上s…
Unity手游之路<七>角色控制器 我们要控制角色的移动,可以全部细节都由自己来实现.控制角色模型的移动,同时移动摄影机,改变视角.当然Unity也提供了一些组件,可以让我们做更少的工作,实现我们所期望的功能.今天我们就一起系统来学习相关的内容吧. (转载请注明原文出处http://blog.csdn.net/janeky/article/details/17406095) Charactor Controller(角色控制器) "角色控制器允许你在受制于碰撞的情况下很容易的进行运动…
RedisTemplate api详解 1. RedisTemplate的事务 private boolean enableTransactionSupport = false; private boolean exposeConnection = false; private boolean initialized = false; private boolean enableDefaultSerializer = true; private RedisSerializer<?> defau…
1.在添加对Log4j2的支持前,需要先把SpringBoot默认使用的Logback日志框架排除,修改pom.xml文件: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.…
1.修改maven配置文件pom.xml,添加对mybatis的支持: <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.3</version> </dependency> 我连接的是mysql数据库,还需要添加mysq…
spring对事务支持的三种形式: 1.通过spring配置文件进行切面配置 <bean id="***Manager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="***source" /> </bean> <tx:…
使用事务之前,先确保数据库的存储引擎支持事务操作. MyISAM:不支持事务,主要用于读数据提高性能 InnoDB:支持事务.行级锁和并发 Berkeley DB:支持事务 ThinkPHP5 使用事务有 3 个常用方法: $model->startTrans(); // 开启事务 $model->rollback(); // 事务回滚 $model->commit(); // 提交事务 小例子: <?php /** * 事务测试 */ public function transa…