![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
springboot
文章平均质量分 52
b_just
这个作者很懒,什么都没留下…
展开
-
@MappedSuperclass的用法
这个注解表示在父类上面的,用来标识父类。基于代码复用和模型分离的思想,在项目开发中使用JPA的@MappedSuperclass注解将实体类的多个属性分别封装到不同的非实体类中。例如,数据库表中都需要id来表示编号,id是这些映射实体类的通用的属性,交给jpa统一生成主键id编号,那么使用一个父类来封装这些通用属性,并用@MappedSuperclas标识。注意:1.标注为@MappedSuperclass的类将不是一个完整的实体类,他将不会映射到数据库表,但是他的属性都将映射到其子类的数据库字转载 2021-09-26 17:40:28 · 244 阅读 · 0 评论 -
实体继承与@Builder注解共存
在面向对象的设计里,继承是非常必要的,我们会把共有的属性和方法抽象到父类中,由它统一去实现,而在进行lombok时代之后,更多的打法是使用@Builder来进行对象赋值,我们直接在类上加@Builder之后,我们的继承就被无情的屏蔽了,这主要是由于构造方法与父类冲突的问题导致的,事实上,我们可以把@Builder注解加到子类的全参构造方法上就可以了!下面做一个Jpa实体的例子一个基类它一般有统一的id,createdOn,updatedOn等字段 ,在基类中统一去维护。注意:父类中的属转载 2021-09-26 17:38:34 · 562 阅读 · 0 评论 -
SpringBoot普通类获取spring容器中bean的方法
前言在spring框架中,是无法在普通类中通过注解注入实例的,因为sping框架在启动的时候,就会将标明交给spring容器管理的类进行实例化,并梳理他们彼此的依赖关系,进行注入,没有交给spring容器管理的普通类,是不会进行注入的,即使你使用了注入的相关注解。这个时候,如果我们需要在普通类中获取spring容器中的实例,就需要一些特定的方法,这里将整理一下如何在springboot中实现这样的方法。创建springboot工程demo项目结构图示项目结构说明service包下为demo接转载 2021-08-04 11:24:54 · 836 阅读 · 0 评论 -
springboot自定义接受参数
在JavaWeb程序的开发过程中,接口是前后端对接的主要窗口,而接口参数的接收有时候是一个令人头疼的事情,这其中最困扰程序猿的,应该是时间参数的接收。比如:设置一个用户的过期时间,前端到底以什么格式传递参数呢?时间戳?还是2019-12-01 22:13:00这种格式?还是其他格式?今天我就来总结一下SpringBoot Web应用接口接收时间类型参数的问题解决方案。注:目前我对Spring源码的掌握还不是很好,所以这一篇仅仅总结一下解决方法,后面感悟多了会重写一下!????示例代码请前往:转载 2021-07-21 09:49:15 · 630 阅读 · 1 评论 -
Springboot 多模块集成mybatis提示:Invalid bound statement (not found),classpath和classpath*区别
1、第一步:检查提示错误信息接口namespace 文件是否对应:MyBatis 文件Mapper 接口定义与Mapper.xml 文件定义一致。2、整体项目结构截图如下:从项目结构来看:包含两个子模块包含MyBatis 的mapper 文件。application.yml 关于mybatis 配置文件(错误配置如下):mybatis: type-aliases-package: com.zzg.author.model.domain;com.zzg.quartz.原创 2021-02-09 10:06:14 · 534 阅读 · 1 评论 -
spring aop两种动态代理方式及其区别(代理模式)
什么是动态代理?假如我有一个user对象,该对象里面有4个方法,增、删、改、查,外界能直接调用这4个方法吗?拿百度来说,你能随便对百度上的内容进行增、删、改、查操作吗?你最多能执行查的操作,增、删、改的操作是不能执行的,你必须要加一个权限操作,应该看看你是否有权限执行这个操作。同理,谁操作了这个东西,你需要给我留下记录,免得我不知道是谁做的。所以,我应该在每一个方法的前面加权限校验,在每一个方法的后面加日志记录。该怎么做呢?有人说,很简单,直接在user对象的实现类里面去改,在增、删、改查前面加转载 2021-01-18 09:34:36 · 4407 阅读 · 0 评论 -
Mybatis:动态sql中For input string: “要判断的值“的问题(一般出现在判断语句中)
报错原因mybatis是用OGNL表达式来解析的,在OGNL的表达式中,'1'会被解析成字符,java是强类型的,char 和 一个string 会导致不等,所以if标签中的sql不会被解析,需要将'1'改为"1",或者加 .toString() 来转换。报错点:我这里像依据性别进行查询错误的写法:<select id="getStudentByCondition" parameterType="string" resultType="com.ctbu.stusys.dom.转载 2021-01-14 09:50:42 · 554 阅读 · 0 评论 -
SpringBoot用实体接收Get请求传递过来的多个参数(绝对可用)
一、Controller层不带任何注解接收参数第一种方法是最简单的,严重怀疑以前怎么没有用,谁知道呢。。不过这次是真的管用了,最简单的方式就是Controller接口入参不加任何注解!!!SpringBoot自动做了处理。代码如下:/** * @author zhangzhixiang * @since v1.0.0 */@RestController@RequestMapping(path = "/ui/institution")public class InstitutionMan转载 2020-12-31 12:00:21 · 4970 阅读 · 1 评论 -
内存溢出+CPU占用过高:问题排查+解决方案+复盘(超详细分析教程)
前言最近刚上线了一款社交项目,运行十多天后(运营持续每天推量),发现问题:系统OOM(资源不能被释放)导致服务器频繁且长时间FGC导致服务器CPU持续飚高 日志中内存溢出:java.lang.OutOfMemoryError: Java heap space 程序十分卡顿,严重影响用户使用从以下方面,为大家分享此次问题解决流程问题出现现象 临时解决方案 复现问题 定位问题发生原因 优化代码 优化后进行压测,上线 复盘学完本博文,你的收获排查内存溢出的思路 排查内存转载 2020-12-08 10:57:23 · 667 阅读 · 0 评论 -
springboot2.1.1 中集成websocket 单元测试异常
springboot2.1.1 中集成websocket 单元测试异常单元测试在没有集成websocket之前是好好的,当集成websocket之后就出现了下面的异常(只贴出来关键信息):2019-01-11 10:05:42 [ERROR] [org.springframework.boot.SpringApplication:858] - Application run failed...转载 2019-11-12 10:18:43 · 107 阅读 · 0 评论 -
@Inherited注解的作用
看到很多注解都被@Inherited进行了修饰,但是这个@Inherited有什么作用呢?查看@Inherited代码描述:Indicates that an annotation type is automatically inherited. If an Inherited meta-annotation is present on an annotation type declaration, and the user queries the annotation type on a clas转载 2020-11-23 17:09:57 · 763 阅读 · 1 评论 -
SpringBoot事务不生效可能存在的原因
1.mysql表必须支持事务:引擎为INNODB2.SpringBoot启动事务@EnableTransactionManagement3.方法上加注解@Transactional//默认只对RuntimeException起作用,可修改4.方法必须为public修饰5.同类中事务的方法不能嵌套在其他方法中, QQQ类中A方法调用B方法,B方法开启事务注解,B方法中事务不会生效。 将A方法放到其他类中,B方法为QQQ类中的一级方法并加注解,事务就会生效。==============.原创 2020-11-11 17:36:16 · 2109 阅读 · 0 评论 -
Spring使用注解@Transactional事物手动回滚
手动回滚:方法1:在service层方法的catch语句中增加:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();语句,手动回滚,这样上层就无需去处理异常(现在项目的做法)方法2:例如service层处理事务,那么service中的方法中不做异常捕获,或者在catch语句中最后增加throw new RuntimeException()语句,以便让aop捕获异常再去回滚,并且在service上层(webser.转载 2020-11-11 17:29:18 · 839 阅读 · 0 评论 -
springBoot 静态变量@value
在工具类中给静态变量初始化值,使用了springBoot的@Value注解,但是没有赋值成功,得到的是null@Value("${jdbc.url}")private static String jdbcUrl;(jdbc.url为springboot配置文件application.properties中配置的常量)@Value对static的属性注入无效可以用set方法赋值 @Value("${jdbc.url}") public void setUrl(St原创 2020-11-11 10:41:51 · 415 阅读 · 0 评论 -
maven 中<dependency>标签中的 scope属性的作用
maven scope属性值设置含义1、枚举各个属性值的含义compile,缺省值,适用于所有阶段,会打包进项目。 provided,类似compile,期望JDK、容器或使用者会提供这个依赖。 runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。 test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。 system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。2、其它类型的属性值都比较容易理解,这里重点比较原创 2020-11-09 16:42:22 · 850 阅读 · 0 评论 -
Google Guava学习 - Guava Range类 - Sharding范围分片使用
1.功能:数据范围处理2.代码: package com.example.google.guava.demo.clazz; import com.google.common.collect.ContiguousSet; import com.google.common.collect.DiscreteDomain; import com.google.common.collect.Range; import com.google.com...原创 2020-10-28 12:13:10 · 483 阅读 · 0 评论 -
Java 使用EasyExcel读取Excel中多个sheet方法及示例代码
本文主要介绍Java中,使用EasyExcel读取Excel文件中多个Sheet的方法,以及使用示例代码。1、读取数据的实体对象@Datapublic class DemoData { private String string; private Date date; private Double doubleData;}2、保存数据的Listener(监听器)// 有个很重要的点 DemoDataListener 不能被spring管理,要每次读取ex.转载 2020-08-17 11:04:50 · 19625 阅读 · 6 评论 -
SpringBoot整合RocketMQ
SpringBoot整合rocketMQRocketMQRocketmq阿里巴巴开源的一款非常优秀的MQ中间件,现在已经捐赠给Apache成为顶级项目,并且已经成功孵化,而且它是为数不多的支持分布事务消息的中间件。中文文档GitHub45apache/rocketmq45Mirror of Apache RocketMQ. Contribute to apache/rocketmq development by creating an account on GitHub....转载 2020-07-14 10:08:32 · 2185 阅读 · 0 评论 -
springboot加载bean过程探索
springboot一般通过以下main方法来启动项目@SpringBootApplicationpublic class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); }}查看源码发现加载的主要逻辑写在了ConfigurableApplicationContextorg.s.转载 2020-06-15 17:57:56 · 638 阅读 · 0 评论 -
从零开始开发一个Spring Boot Starter
一.Spring Boot Starter简介Starter是Spring Boot中的一个非常重要的概念,Starter相当于模块,它能将模块所需的依赖整合起来并对模块内的Bean根据环境( 条件)进行自动配置。使用者只需要依赖相应功能的Starter,无需做过多的配置和依赖,Spring Boot就能自动扫描并加载相应的模块。总结:1.它整合了这个模块需要的依赖库;2.提供对模块的配置项给使用者;3.提供自动配置类对模块内的Bean进行自动装配;例如,在Maven的依赖中加入.转载 2020-06-15 17:56:35 · 152 阅读 · 0 评论 -
spring boot 启动原理解析
我们开发任何一个Spring Boot项目,都会用到如下的启动类1 @SpringBootApplication2 public class Application {3 public static void main(String[] args) {4 SpringApplication.run(Application.class, args);5 }6 }从上面代码可以看出,Annotation定义(@SpringBootApplication)和类定转载 2020-06-15 17:55:39 · 179 阅读 · 0 评论 -
Spring源码-循环依赖
Spring 在哪些情况下会出现循环依赖错误?哪些情况下能自身解决循环依赖,又是如何解决的?本文将介绍笔者通过本地调试 Spring 源码来观察循环依赖的过程。1. 注解属性注入首先本地准备好一份 Spring 源码,笔者是从 Github 上 Clone 下来的一份,然后用 IDEA 导入,再创建一个 module 用于存放调试的代码。调试模块目录本次调试有三个类,A、B 通过注解 @Autowired 标注在属性上构成循环依赖,Main 为主函数类。@Component("A"转载 2020-06-11 10:33:12 · 118 阅读 · 0 评论 -
aop切面组合表达式条件
aop在注解方式下的条件"非"方法a表示为 a.b.c 包下的所有public方法方法b表示为 a.b.c 包下的所有public切方法名为index的方法方法c表示为 a.b.c 包下的所有public且方法名以public开头的方法@Pointcut("execution(public * a.b.c..*(..))")public void a() {} @Pointcut("execution(public * a.b.c..index(..))")public voi...转载 2020-05-26 16:52:55 · 1065 阅读 · 0 评论 -
SpringBoot AOP完全讲解一:基础概念
Aop 切面编程aop 全称 Aspect Oriented Programming ,面向切面,AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。其与设计模式完成的任务差不多,是提供另一种角度来思考程序的结构,来弥补面向对象编程的不足。搭建Aop本来 spring 就自带一套 aop 实现,我们直接使用此实现即可,本来使用aop还需要定义一些xml文件,但由于我们使用的是spring-boot框架,这一步就转载 2020-05-26 16:50:50 · 428 阅读 · 1 评论 -
Spring全家桶系列–SpringBoot之AOP详解
面向方面编程(AOP)通过提供另一种思考程序结构的方式来补充面向对象编程(OOP)。OOP中模块化的关键单元是类,而在AOP中,模块化单元是方面。准备工作首先,使用AOP要在build.gradle中加入依赖//引入AOP依赖compile "org.springframework.boot:spring-boot-starter-aop:${springBootVersion}"然后在application.yml中加入spring: aop: proxy-..转载 2020-05-26 16:47:39 · 404 阅读 · 0 评论 -
springboot + AOP 日志
一. 简介记录日志方便排错,记录操作记录。通常有俩层需要加日志:controller层和service层。controller层的日志使用Log打印信息,service层的日志使用数据库记录操作日志。Controller层 通过添加一个AOP切面,监控controller层的所有方法:调用之前打印请求信息,包含URL,HTTP_METHOD,IP,CLASS_METHOD,ARGS;在方法完成后,打印返回的请求结果,包含code, m...转载 2020-05-26 16:45:34 · 190 阅读 · 0 评论 -
在SpringBoot中用SpringAOP实现日志记录功能
背景:我需要在一个SpringBoot的项目中的每个controller加入一个日志记录,记录关于请求的一些信息。代码类似于: logger.info(request.getRequestUrl());之类的。代码不难,但由于Controller的数量不少,干起来也是体力活。所以想到了用Spring AOP来解决这个问题。首先,在pom中加入SpringAOP的相关依赖:<dependency> <groupId>org.spri.转载 2020-05-26 16:43:32 · 262 阅读 · 0 评论 -
Docker部署SpringBoot项目
1.创建springboot项目创建springboot项目package com.eangulee.demo.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;impor.转载 2020-05-18 16:15:26 · 866 阅读 · 1 评论 -
SpringBoot cookie工具类
import javax.servlet.http.Cookie;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class CookieUtil { public static String getCookie(HttpServletRequest request, String cookieName){ Cookie[] .原创 2020-05-14 14:13:12 · 576 阅读 · 0 评论 -
SpringBoot配置HTTPS,并实现HTTP访问自动转HTTPS访问
这里说一下为什么写这篇文章,因为我也是一个SpringBoot初学者,在配置https的时候遇到了一些坑,根据网上的配置方式,发现一些类已经过时,这里仅以记录一下我的配置过程,以供参考.1.使用jdk自带的 keytools 创建证书打开cmd窗口,输入如下命令keytool -genkey -alias tomcat -keyalg RSA -keystore ./server.keystore 按照提示进行操作输入密钥库口令:123456再次输入新口令:12345..转载 2020-05-12 10:54:14 · 856 阅读 · 0 评论 -
Spring Cloud (十三) Zuul:静态路由、静态过滤器与动态路由的实现
阅读目录前言 快速入门 路由详解 Cookie与头信息 本地跳转 Hystrix和Ribbon支持 过滤器解释 动态加载 后记前言本文起笔于2018-06-26周二,接了一个这周要完成的开发任务,需要先等其他人的接口,可能更新的会慢一些,还望大家见谅。这篇博客我们主要讲Spring Cloud Zuul。项目地址:我的githubSpring Cloud Zuul大家可以理解为一个集网关(路由)、负载均衡、校验过滤、结合服务治理框架、请求转发时熔断机制、服务聚合等 一系列功能转载 2020-05-11 10:50:54 · 736 阅读 · 0 评论 -
Spring 中使用责任链设计模式
本片文章不是讲Spring源码中使用责任链的设计实例,而是会讲在Spring中如何设计自己的责任链并且如何调用。责任链设计模式作为我们常用的设计模式之一,用途非常的广,例如在一些流程化的执行中、或者是一些动态拦截中我们都可以使用责任链设计模式进行设计需求,从而使我们的项目无论是可用性还是可扩展性都会非常的好。大家对于责任链还有不了解的可以看我之前的博文设计模式——责任链模式。如何定义链...转载 2020-04-24 17:10:44 · 2132 阅读 · 0 评论 -
Spring/SpringBoot常用注解总结
可以毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的场景。对于每一个注解我都说了具体用法,掌握搞懂,使用 SpringBoot 来开发项目基本没啥大问题了!为什么要写这篇文章?最近看到网上有一篇关于 SpringBoot 常用注解的文章被转载的比较多,我看了文章内容之后属实觉得质量有点低,并且有点会误导没有太多实际使用经验...转载 2020-04-24 13:53:49 · 155 阅读 · 0 评论 -
springboot集成elasticsearch-Spring Data Elasticsearch
https://spring.io/projects/spring-data-elasticsearch#learn原创 2020-04-09 09:51:27 · 90 阅读 · 0 评论 -
springboot项目之间相互引用,提取工具类和相同查询等公用代码
流程:主项目的maven依赖添加公共项目,配置文件中添加公共项目中需要的配置属性,包扫描添加公共项目包,主项目就可以直接调用公共项目中的代码和js了,打包时先打包公共项目再打包主项目,且公共项目不要打包为可执行jar包,否则主项目打包时会重复打包导致报错,打包后配置文件以主项目为准,修改jar中的文件时,如果是主项目文件则正常修改覆盖,如果是公共项目jar包中文件则需要用winrar的不压缩文件修...原创 2020-04-02 10:31:06 · 1727 阅读 · 0 评论 -
Spring Boot实战:拦截器与过滤器
Spring Boot实战:拦截器与过滤器一、拦截器与过滤器 在讲Spring boot之前,我们先了解一下过滤器和拦截器。这两者在功能方面很类似,但是在具体技术实现方面,差距还是比较大的。在分析两者的区别之前,我们先理解一下AOP的概念,AOP不是一种具体的技术,而是一种编程思想。在面向对象编程的过程中,我们很容易通过继承、多态来解决纵向扩展。但是对于横向的功能,比如,在所有的ser...转载 2020-03-19 14:21:03 · 164 阅读 · 0 评论 -
org.springframework.boot.web.server.WebServerException: Unable to create tempDir. java.io.tmpdir is
问题原因:springboot创建临时文件找不到对应的目录解决办法:1. 重新指定临时文件位置 java -Djava.io.tempdir=D:/tmpdir -jar -my_project.jar 2. 手动创建指定文件夹 3.启动类中加入配置临时文件目录 1 2 3 4 5 6 7...转载 2020-03-10 21:13:16 · 7156 阅读 · 3 评论 -
SpringBoot 设置定时任务
一:创建定时任务创建core→tesks→tesk.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25...转载 2020-02-27 11:10:49 · 418 阅读 · 0 评论 -
maven项目引入sqljdbc4 找不到包的完美 解决方案。
今天碰到了这个问题,解决了,顺便做一下记录。首先来 重现 一下这个问题,maven install报错,说 找不到这个包,但是其实 我已经安装了。我们 再来 看看 maven本地仓库里面有 什么,这说明我们的包根本没下载下来,网上说 可以 先 下载jar包,然后 再用 mvn install安装这些jar包,可是可以,但是太麻烦,而且问题没有根本性得到解决。 我们 再来看看mav...转载 2019-12-23 14:41:49 · 1278 阅读 · 0 评论 -
SpringBoot返回结果如果为null或空值不显示处理方法
第一种方法:自定义消息转换器 1 @Configuration 2 public class WebMvcConfig extends WebMvcConfigurerAdapter{ 3 4 5 // /** 6 // * 利用fastjson替换掉jackson 7 // * @param converters 8 // *...转载 2019-11-29 09:57:44 · 10821 阅读 · 1 评论