SpringBoot
诗水人间
要想走的更远,就需要思考更深层次的问题。冷静、智慧、深沉是我所向往的
展开
-
springboot自定义starter启动器
第一步、创建 xxx-spring-boot-starter 的spring Initializr模块第二步、删除不需要的内容(启动类、除下面spring-boot-starter的其它依赖,maven编译插件)<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId></depen原创 2020-10-18 01:43:39 · 72719 阅读 · 3 评论 -
开启缓存@EnableCaching 和 使用缓存@Cacheable
springboot中的缓存注解支持Spel表达式,因此这里展示常用的SpEL表达式SpEL运算符类型运算符关系运算符< ,> , <= ,>=,==,!=,lt,gt,le,ge,eq,ne算数运算符+,-,*,/ ,%,^逻辑运算符&&,||,and,or,not,between,instanceof条件运算符? : (ternary),? : (elvis)正则表达式matches其他类型?. ,原创 2020-07-26 20:28:14 · 141642 阅读 · 0 评论 -
JSR303校验注解的使用 和 自定义校验注解
引入validation依赖 <!--JSR303依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency>/*Null检查@Null(message = "") 验证对象是否为null原创 2020-07-02 22:51:19 · 129991 阅读 · 0 评论 -
springboot项目,用到的maven依赖持续补充与修改
maven的仓库地址:https://mvnrepository.com/一定要注意的是springboot项目的依赖,一般都是*-spring-boot-start*这类的依赖,所以对于初学者来说往往第一次会加错依赖加成spring项目的依赖,而不是springboot项目的。因此在加入依赖如果发现无法使用最后去官网找找原因,可能是加错依赖,官网一般会提供springboot项目的maven依赖。对于一个空的maven项目来说,首先需要加入启动器:spring-boot-starter依赖原创 2020-03-31 01:08:58 · 118985 阅读 · 1 评论 -
cglib代理原理----aop原理
maven环境下1、引入cglib依赖<!-- https://mvnrepository.com/artifact/cglib/cglib --><dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>3.3.0</version></dependency><!原创 2021-04-11 00:22:50 · 374 阅读 · 0 评论 -
IDEA maven、springboot项目jsp页面打包成jar后 jsp页面404的解决方案
配置都没有问题,我遇到的问题居然是版本导致jsp页面无法访问,将springboot的编译插件的版本设定为1.4.2.RELEASE居然解决了问题。前提先检测pom配置文件以及yml配置文件的配置yml关于jsp的配置什么也不要填,用默认值就行了yml配置文件的说明关键的配置在于pom,上面的yml只是为了强调不要加前缀后缀这类,或者你配置一个正确的前缀、后缀访问路径。pom的配置如下关于jsp的相关依赖进行检测,其中的scope是否是provide无关紧要,因为springboot的mave原创 2021-03-18 01:38:46 · 1104 阅读 · 1 评论 -
springboot项目docker部署时时区相差8小时的解决办法
在启动类的main方法加上下面一行代码即可解决问题TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));以下面的代码代码为例启动一个自己打包号的OSS签名服务docker run -it -d --restart=always --name=OSS --network=host -v /opt/:/opt \docker.io/java java -jar /opt/OSS-aliyun-1.0.jar经过测试,下面这个方法是无原创 2021-03-15 03:09:28 · 1624 阅读 · 0 评论 -
RestTemplate post中文乱码的解决方案
final HttpEntity<String> reqestEntity = new HttpEntity<>(JSONObject.toJSONString(tCarList), null);final RestTemplate restTemplate = new RestTemplate();// 设置为UTF8编码restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(Sta原创 2021-03-13 19:45:33 · 1174 阅读 · 0 评论 -
MabatisPlus注入Mapper接口失败的解决方案
Field tCarDao in xxx.xxx.XXX required a bean of type ‘xxx.xxx.XXX’ that could not be found.The injection point has the following annotations:- @org.springframework.beans.factory.annotation.Autowired(required=true)pom依赖springboot要下面这个依赖<!-- mybatisP原创 2021-03-13 17:10:26 · 2476 阅读 · 0 评论 -
springboot返回html页面,以及关于css,js等静态文件的处理
springboot项目只要添加了web模块的依赖就可以直接访问到前端页面。下面是web的依赖,版本号托管父工程<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency>不需要添加yml/properties配置,但要求前端页面的的存放原创 2021-03-13 15:29:56 · 3881 阅读 · 4 评论 -
引用springboot依赖管理,加上自定义依赖,实现自定义依赖管理。
第一步创建一个maven工程第二步、粘贴下面的内容到pom中打包方式pomproperties定义变量,用于版本管理dependencyManagement中引入spring-boot-starter-parent注意scope为import,type为pom(表示以pom的方式引入)需要加上springboot的maven插件编译插件可有可无,建议加上<packaging>pom</packaging><properties> <ja原创 2021-01-19 07:24:29 · 1613 阅读 · 0 评论 -
springboot+vue 的整合问题总结
第一个问题、整合路径问题一、Vue中 修改 config/index.js 的build设置需要了解这些配置的意思,可以根据名称很容易知道其含义里面这些需要了解一下:二、SpringBoot中 application.yml中设置类路径:spring: # 设置映射路径 mvc: static-path-pattern: /**...原创 2019-11-16 21:25:58 · 123221 阅读 · 0 评论 -
Springboot项目一个接口同时支持GET、POST等请求方式
在Controller类上加上下面的注解即可,其它请求继续在数组中添加通过逗号分隔@RequestMapping(method = {RequestMethod.GET,RequestMethod.POST})完整的代码如下import org.springframework.web.bind.annotation.*;@RestController@RequestMapping(method = {RequestMethod.GET,RequestMethod.POST})public原创 2021-01-12 16:47:01 · 5962 阅读 · 1 评论 -
自定义注解+反射 实现给注解添加功能的效果
注解我们经常会用到,或者在jdk源码中也会看到,例如: @Deprecated以及我们在spring或者springboot中经常用到@Controller、@Service、@Repository、@Entity等注解。是否思考过他们是怎么工作的?下面我们使用 自定义注解 + 反射给注解加上功能先贴出整体效果图:源码:java8环境一、定义注解jdk提供了自定义注解的工具类,在 java.lang.annotation包下先看下自定义注解的模板:(模板后面有解释)import java原创 2020-12-01 02:51:16 · 26199 阅读 · 0 评论 -
springcloud依赖,持续更新
parent依赖<!-- 版本管理配置 --><properties> <!--依赖管理--> <spring-boot-dependencies.version>2.2.6.RELEASE</spring-boot-dependencies.version> <spring-cloud-alibaba-dependencies.version>2.2.1.RELEASE</spring-cloud-原创 2020-09-21 03:03:15 · 93101 阅读 · 2 评论 -
缓存穿透、缓存雪崩、缓存击穿 概念
缓存穿透 (不经过缓存例如不存在的数据,直接查数据库 称作穿透)高并发查询一个没有缓存的数据(一种是数据库中不存在,另一种是数据库有但缓存没有),这样所有的请求都会去访问数据库查询数据。这样数据库就会导致突然的高并发。解决方案:对于不存在的数据也进行缓存缓存雪崩(缓存数据大面积同时失效,高并发请求全部直接查询数据库 称为雪崩)采用相同的过期时间,导致数据同时失效,请求全部转发到数据库,数据库瞬间压力过大。解决方案:对于缓存的过期时间采用随机值缓存击穿(热点数据失效,那一时刻,高并发请求会原创 2020-08-13 01:19:56 · 128441 阅读 · 0 评论 -
RestTemplate自定义请求头,get方式下载文件
get方式自定义请求头下载文件RestTemplate restTemplate = new RestTemplate();HttpHeaders headers = new HttpHeaders();//创建请求头对象headers.add("referer",refererUrl);//设置请求头,多个头则通过add一个一个添加HttpEntity<String> entity = new HttpEntity<String>("", headers);//将请求头传入原创 2020-08-10 05:30:29 · 100334 阅读 · 1 评论 -
Sharding-JDBC----操作公共表
在前面的 垂直分库前提上,给 ds0,ds1,ds2 三个数据源 都创建一个t_udict表CREATE TABLE `t_udict` ( `dictid` bigint(20) NOT NULL, `ustatus` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `uvalue` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT N原创 2020-08-03 03:08:49 · 130049 阅读 · 0 评论 -
4、Sharding-JDBC----垂直分表----使用案例
1、Sharding-JDBC----水平分库----使用案例2、Sharding-JDBC----水平分表----使用案例3、Sharding-JDBC----垂直分库----使用案例4、Sharding-JDBC----垂直分表----使用案例垂直分表需要将表的列进行拆分。1张表分成多张表因此这个不是Sharding-JDBC做的事情。它也做不了...原创 2020-08-02 23:04:05 · 162293 阅读 · 0 评论 -
3、Sharding-JDBC----垂直分库----使用案例---专库专表
1、Sharding-JDBC----水平分库----使用案例2、Sharding-JDBC----水平分表----使用案例3、Sharding-JDBC----垂直分库----使用案例4、Sharding-JDBC----垂直分表----使用案例垂直分库实际上就是专库专表垂直分裤就是将表单独存一个库创建数据库CREATE DATABASE user_db;USE user_db;SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- --原创 2020-08-02 23:02:56 · 118934 阅读 · 0 评论 -
2、Sharding-JDBC----水平分库----使用案例
1、Sharding-JDBC----水平分表----使用案例2、Sharding-JDBC----水平分库----使用案例3、Sharding-JDBC----垂直分库----使用案例4、Sharding-JDBC----垂直分表----使用案例创建2个数据库course_db_1、course_db_2两个数据库都有两张表course_1、course_2修改下面的course_db_1为course_db_2创建第二个数据库-- 创建数据库CREATE DATABASE course原创 2020-08-02 23:01:25 · 111245 阅读 · 0 评论 -
1、Sharding-JDBC----水平分表----使用案例
1、Sharding-JDBC----水平分表----使用案例2、Sharding-JDBC----水平分库----使用案例3、Sharding-JDBC----垂直分库----使用案例4、Sharding-JDBC----垂直分表----使用案例一、创建数据库-- 创建数据库CREATE DATABASE course_db;-- 使用创建的数据库USE course_db;-- 设置字符集SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;原创 2020-08-02 21:07:31 · 144335 阅读 · 1 评论 -
Springboot项目中使用Redis
加入redis依赖版本号由父工程管理<!-- spring-boot 的redis依赖 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>单节点配置Redisspring: redis:原创 2020-07-26 20:25:33 · 113382 阅读 · 1 评论 -
Idea中的application.yml不生效?修改打包方式pom为jar或者去掉packaging标签
是否会发现加入数据库相关的依赖后,并且添加类数据库连接的yml配置后发现报如下错误APPLICATION FAILED TO STARTDescription:Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could be configured.Reason: Failed to determine a suitable driver classActi原创 2020-06-07 00:11:43 · 147149 阅读 · 2 评论 -
Swagger-UI的使用
第一步、引入依赖<!-- springfox-swagger2 --><dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version></dependency><!-- springfox-swagger原创 2020-06-06 00:40:03 · 153938 阅读 · 0 评论 -
springboot jar方式指定配置文件启动
激活指定profile 1、在配置文件中指定 spring.profiles.active=dev 2、命令行: java -jar spring-boot-demo.jar --spring.profiles.active=dev; 可以直接在测试的时候,配置传入命令行参数 3、虚拟机参数; -Dspring.profiles.active=dev...原创 2020-06-02 13:32:42 · 128508 阅读 · 0 评论 -
springboot配置文件中的占位符
1、随机数${random.value}、${random.int}、${random.long}${random.int(10)}、${random.int[1024,65536]}2、占位符获取之前配置的值,如果没有可以是用:指定默认值person.last-name=张三${random.uuid}person.age=${random.int}person.birth=2017/12/15person.boss=falseperson.maps.k1=v1person.maps.原创 2020-06-02 13:24:22 · 133271 阅读 · 0 评论 -
yaml配置文件的语法规范
1、基本语法k:(空格)v:表示一对键值对(空格必须有);以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的server: port: 8081 path: /hello属性和值也是大小写敏感;2、值的写法字面量:普通的值(数字,字符串,布尔) k: v:字面直接来写; 字符串默认不用加上单引号或者双引号; " ":双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思 name: “zhangsan \n lisi原创 2020-06-02 12:55:45 · 129567 阅读 · 0 评论 -
springboot2.2.6整合Dubbo2.7.6
首先需要准备环境docker安装zookeeper环境的安装web 端的监控中心github地址(需要修改properties配置文件的zookeeper服务器ip为上面搭建好的zookeeper服务器ip,或者你可以直接在本机上直接运行zookeeper,默认就行,下面的web管理后台中properties中的地址为localhost,如果使用的zookeeper服务器地址不是lo...原创 2020-05-06 15:27:02 · 137303 阅读 · 0 评论 -
spring-cloud-dependencies管理的相关依赖
spring-boot-parent或spring-boot-dependencies管理的依赖spring-cloud-dependencies 版本Hoxton.SR3管理依赖的版本号如下: <properties> <spring-cloud-kubernetes.version>1.1.2.RELEASE</spring-cloud...原创 2020-05-03 08:36:35 · 165390 阅读 · 0 评论 -
spring-boot-dependencies管理的版本依赖,spring-boot-parent的父依赖是dependencies
spring-cloud-dependcies管理的依赖为了方便查找可以收藏本篇文章,当然也可以找到自己本地仓库中的pom文件,然后通过ctrl+F(浏览器和文本软件)搜索自己想要使用的依赖查看一下对应的版本在使用spring-boot-parent或者spring-boot-dependencies时是否有会有疑问?在加入新的依赖的时候,疑惑这个依赖是否需要<version&...原创 2020-05-03 08:22:38 · 148305 阅读 · 0 评论 -
maven项目设置阿里镜像源,设置编译源码的jdk版本
第一种方式 修改setting.xml文件在mirrors标签写添加, <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups...原创 2020-05-02 21:09:00 · 118175 阅读 · 0 评论 -
@RequestBody接收前端的json数据-后台使用fastjson转换
从仓库中获取fastjson的maven依赖<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --><dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</art...原创 2020-04-26 17:12:14 · 141186 阅读 · 0 评论 -
Callable和DeferredResult多线程工具类的使用,提高tomcat的并发量
Callable是jdk提供的多线程工具类来自 java.util.concurrent.Callable;Callable的使用方式比较简单,对于一般的多线程使用Callable接口就可以完成。DeferredResult是由spring提供的一个多线程工具类,使用比较复杂,但是能做的事情更多来自 org.springframework.web.context...原创 2020-04-27 16:26:32 · 143293 阅读 · 0 评论 -
什么是AOP,AOP的作用是什么?常见AOP功能
AOP全称(Aspect Oriented Programming)面向切片编程的简称AOP的定义:AOP通过预编译方式和运行期动态代理实现,在不修改源代码的情况下,给程序动态统一添加功能的一种技术,简称AOP。是spring框架的一个重要内容,是OOP(面向对象编程)的衍生模范型。AOP的作用:利用AOP对业务逻辑的各个部分进行隔离,降低业务逻辑的耦合性,提高程序的可重用型...原创 2020-02-18 19:50:42 · 154250 阅读 · 1 评论 -
@RequestParam,@PathParam,@PathVariable等注解区别
@RequestParam 和 @PathVariable 注解是用于从request中接收请求的,两个都可以接收参数,关键点不同的是@RequestParam 是从request里面拿取值,而 @PathVariable 是从一个URI模板里面来填充@RequestParam看下面一段代码:http://localhost:8080/springmvc/hello/101?param1...转载 2020-04-16 06:09:00 · 131988 阅读 · 0 评论 -
使用@RequestMapping+@Pathvariable获取url中携带的参数
以下面的代码为例import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import top.huas...原创 2020-04-16 04:30:51 · 133135 阅读 · 0 评论 -
WireMock伪造服务的使用
wiremock伪造服务实际上就是伪造数据 比如一些json数据我们都知道在实际开发中项目会采用前后端分离的模式,前端可能来自web浏览器,android手机app,IPhone手机。基于上面前端的多种方式访问,如果在前端做修改相当于同样的事情做了3次。而在后端只需要做一次即可。因此我们选择后端伪造数据、为了更好的伪造数据此引入WireMock的使用注意:WireMock支...原创 2020-04-15 23:19:27 · 129805 阅读 · 0 评论 -
commons-lang3的使用
转载原文链接:https://blog.csdn.net/f641385712/article/details/82468927转载 2020-04-08 00:55:52 · 157850 阅读 · 0 评论 -
mybatisPlus基本的crud和 物理分页插件 汇总
在MybatisPlus官网的文档中分Mapper 即dao层的CRUD 和Service层的CRUD 文档链接:mapper-crud-接口另外官网推荐慕课网的视频教程链接:MybatisPlus从不会到熟练使用关于环境配置请看:MP入门下面是前提:Mapper层 首先得定义一个 interface类去继承MybatisPlus的BaseMapper类并且 指定一个泛型 (即 实体类 对应 数据库里的表)相当于这个接口是对这张表操...原创 2019-11-10 15:38:06 · 136960 阅读 · 0 评论