- 博客(61)
- 资源 (4)
- 收藏
- 关注
原创 SpringDataJPA笔记(15)--Inheritance注解详解之JOINED
SpringDataJPA笔记(15)–Inheritance注解详解之JOINED在JPA中使用映射注解Inheritance,有一种策略是JOINEDJOINED – 每个类分别生成一张单独的表,但是每张表只有自己的属性,没有父类的属性,通过外键关联的形式使两张表关联起来还是简单写个demo测试一下先写三个实体类@Data@Table(name = "inheritance_joi...
2020-04-20 01:18:33
1542
原创 SpringDataJPA笔记(14)-Inheritance注解详解之SINGLE_TABLE
SpringDataJPA笔记(14)-Inheritance注解详解之SINGLE_TABLE在JPA中使用映射注解Inheritance,有三种策略属性SINGLE_TABLE – 将所有父类和子类集合在一张表TABLE_PER_CLASS – 每个子类会生成一张单独的表,父类可以查询所有子类的表数据,参考上一篇笔记Union查询JOINED – 每个类分别生成一张单独的表,但是每张表...
2020-04-20 01:08:21
1658
原创 SpringDataJPA笔记(13)-Union查询
SpringDataJPA笔记(13)-Union查询在JPA中,对Union查询可以通过两种方式,一种是通过Inheritance的注解来实现,一种是通过子查询来实现,个人觉得子查询的方式更加灵活一点来看具体的demo首先是第一种通过Inheritance的注解先设置一个基类,包含了要查询出来的属性,这个类并不会生成实际的表需要注意一点 如果使用这个注解,id不能使用自增长,因为id在...
2020-04-20 00:30:51
4544
1
原创 SpringDataJPA笔记(12)-Table注解详解
SpringDataJPA笔记(12)-Table注解详解由于在实际使用中,有时候会遇到需要访问同一台服务器上别的数据库,但是又不想配置多数据源的情况,Table注解给我们提供了这种便利的操作JPA在根据实体自动生成数据表关联的时候,如果实体类与其映射的数据库表名不同名时,则需要使用到Table注解来标注映射的表名,除此之外还可以指定表所属的数据库目录或模式首先来看一下Table注解的属性...
2020-03-24 00:11:06
1320
原创 SpringDataJPA笔记(11)-Transient注解
SpringDataJPA笔记(11)-Transient注解Transient注解用于标注该字段不需要添加到数据库表但是在使用Transient注解的时候有两个包[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JUNSQ6hi-1584890157709)(C:\Users\45992\AppData\Roaming\Typora\typora-user-im...
2020-03-22 23:16:38
2940
1
原创 SpringDataJPA笔记(10)-动态设置表名
SpringDataJPA笔记(10)-动态设置表名在实际使用中可能会遇到需要动态设置表名的情况,特别是通常在后台管理系统里面,总有一些相似的功能需要抽象出来写一些公共的方法,以减少代码开发量,降低重复劳动首先看BaseRepository的代码@NoRepositoryBeanpublic interface BaseRepository<T, ID extends Seriali...
2020-03-21 23:05:30
5031
1
原创 SpringDataJPA笔记(9)-使用transation注解引发的唯一索引冲突的问题
SpringDataJPA笔记(9)-使用transation注解引发的唯一索引冲突的问题在业务中使用JPA的时候,因为业务逻辑比较复杂,使用了@Transactional 注解来确保事务一致性在实际使用的时候却遇到了问题,最终发现 Hibernate 在实际执行SQL语句时并没有按照代码的顺序执行,而是按照 INSERT, UPDATE, DELETE的顺序执行的原因是Hibernate ...
2020-03-20 22:12:50
1345
1
原创 Ribbon拦截器ClientHttpRequestInterceptor-传递header
Ribbon拦截器ClientHttpRequestInterceptor-传递headerSpring Cloud的微服务在使用RestTemplate调用的时候,header会丢失,这会导致服务间token等一些信息的丢失可以使用ClientHttpRequestInterceptor拦截请求,并将header统一设置进去首先配置一个自定义的ClientHttpRequestInterc...
2020-03-19 23:18:55
5218
1
原创 Feign的拦截器RequestInterceptor
Feign的拦截器RequestInterceptorSpringCloud的微服务使用Feign进行服务间调用的时候可以使用RequestInterceptor统一拦截请求来完成设置header等相关请求,但RequestInterceptor和ClientHttpRequestInterceptor有点不同,它拿不到原本的请求,所以要通过其他方法来获取原本的请求首先创建自定义的Reques...
2020-03-18 00:27:11
8808
1
原创 记AES加密在linux系统每次都不一样的问题
记AES加密在linux系统每次都不一样的问题在项目中通常会用到AES的加密方法,具体代码如下package com.mt.demo.client.utils;import lombok.extern.slf4j.Slf4j;import org.bouncycastle.jce.provider.BouncyCastleProvider;import org.springframew...
2020-03-17 00:11:00
1544
1
原创 Spring-LogBack笔记(2) - 配置文件
Spring-LogBack笔记(2) - 配置文件日志相关的配置可以通过xml文件来配置默认配置是resource目录下的logback.xml也可以通过logging.file指定配置文件日志配置主要有几种配置按日期切割成不同的文件 <!-- 按照每天生成日志文件 --> <appender name="FILE" class="ch.qos.logba...
2020-03-16 00:41:18
266
原创 Spring-LogBack笔记(1) - 基础使用
Spring-LogBack笔记(1) - 基础使用Spring内部集成了LogBack的日志组件日志等级分为6种public enum LogLevel { TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF}OFF是关闭日志其他6种从低到高分别是TRACE < DEBUG < INFO < WARN < ERRO...
2020-03-16 00:37:29
309
原创 基于DOCKER安装Redis Sentinel 集群导致的NAT网络问题解决方法
基于DOCKER安装Redis Sentinel 集群导致的NAT网络问题解决方法在之前的文章https://blog.youkuaiyun.com/yingziisme/article/details/83034298记录了如何基于Docker搭建Redis Sentinel 集群那个时候留下了一个网络的问题在服务器使用docker部署的,但是本地远程的时候,sentinel集群返回的地址是doc...
2019-08-27 00:07:18
2238
1
原创 Swagger笔记(二)springboot集成和ApiModel使用不当的一个小问题
swagger现在已经是主流api工具了,特别是前后端分离的开发模式的流行,基本上都会用它来生成接口文档swagger官网https://swagger.io/使用springboot来集成swagger也比较简单首先在pom文件中引入相关的包<dependency> <groupId>io.springfox</groupId>...
2019-07-29 23:46:31
1111
1
原创 Swagger-ui在文件上传时报错net::ERR_CONNECTION_RESET
Swagger-ui在文件上传时报错net::ERR_CONNECTION_RESET项目版本spring-boot 2.1.6.RELEASEswagger 2.7.0在使用swagger做接口测试的时候遇到了一个诡异的问题,在文件超过限制大小的时候,没有按照全局异常拦截返回相应的错误码,而是直接抛出了一个net::ERR_CONNECTION_RESET的报错,页面没有任何返回显示测...
2019-07-28 23:25:39
5110
原创 SpringCloudGateway笔记(10)-websocket
使用SpringCloudGateway的重要功能 – websocket的转发spring-boot的第一代网关zuul不支持websocket的转发,而在实际应用场景中,websocket作为一个常用功能,这大大限制了zuul的使用SpringCloudGateway支持websocket的转发配置websocket的客户端和服务端客户端页面代码<!DOCTYPE html&g...
2019-07-12 00:09:31
15474
3
原创 SpringCloudGateway笔记(11)-异常拦截
使用SpringCloudGateway的全局异常拦截其实这个应该是webflux的全局异常拦截,由于gateway使用的是webflux的底层,不是servlet容器,异常处理需要继承ErrorWebExceptionHandler具体实现如下@Slf4j@Componentpublic class GlobalExceptionHandler implements ErrorWebE...
2019-07-10 23:54:39
3517
1
原创 SpringCloudGateway笔记(9)-限流
使用SpringCloudGateway的重要功能 – 限流过滤器网关的重要功能还有限流SpringCloudGateway提供了一个默认的限流过滤器RequestRateLimiter,默认通过Redis+Lua技术实现高并发和高性能的限流方案,源码参考RedisRateLimiter和META-INF/scripts/request_rate_limiter.lua实际使用需要引用spr...
2019-07-09 23:42:14
1200
原创 SpringCloudGateway笔记(8)-权重
使用SpringCloudGateway的重要功能 – 权重路由由于后端的服务器有时候性能不同,或者是由于需要灰度发布,需要上线一部分新版本的服务注:灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始...
2019-07-08 23:45:19
2430
4
原创 SpringCloudGateway笔记(7)-响应不全
实际使用遇到的问题 – 获取ResponseBody不完整和Memory LEAK的问题第一种获取方式,会遇到获取ResponseBody不完整的问题具体的代码如下@Slf4j@Componentpublic class ResponseBodyFilter implements GlobalFilter, Ordered { @Override public Mono&...
2019-07-06 01:39:05
3620
4
原创 SpringCloudGateway笔记(5)-netty空指针问题
实际使用遇到的问题 – 响应为空的时候抛异常 java.lang.NullPointerException在使用SpringBoot 2.0.0.RELEASE + SpringCloud Finchley.RELEASE 版本开发的时候遇到响应体为空的时候会抛出一个异常java.lang.NullPointerException: null at java.util.concurrent...
2019-07-05 00:34:27
2139
原创 SpringCloudGateway笔记(6)-请求体不全
实际使用遇到的问题 – 在filter里面获取RequestBody不完整以及LEAK MEMORY的问题第一种获取方式在网上找到的最常见的一种获取RequestBody的方式是 private String resolveBodyFromRequest(ServerHttpRequest serverHttpRequest){ //获取请求体 Flux...
2019-07-05 00:34:11
3033
1
原创 SpringCloudGateway笔记(4)-WebSession
WebSession以往用zuul作网关的时候,直接使用@EnableRedisHttpSession 在配置里面就可以通过redis共享session信息spring同时提供了EnableRedisWebSession 来对WebFlux的支持session的jar包引入POM <dependency> <groupId>or...
2019-07-03 21:59:13
16161
3
原创 SpringCloudGateway笔记(3)-Predict与自定义Predict
Predict与自定义PredictPredict(谓词)用于匹配用户的请求,来选择是否要路由Spring Cloud Gateway自带的谓词工程列表Predict说明After Route Predicate请求的时候发生在指定时间之后Before Route Predicate请求发生在指定时间之前Between Route Predicate请求...
2019-05-20 20:33:16
1792
1
原创 SpringCloudGateway笔记(2)-filter与自定义filter
filter与自定义filter过滤器可以在路由请求之前对请求进行处理,也可以在请求响应之后对响应进行处理在请求路由之前可以做比如参数校验,鉴权,日志记录,协议转换,请求参数修改,路径修改等在请求响应之后可以做比如记录响应消息,修改响应,修改响应头等最常见的功能就是鉴权,日志记录,限流和权重路由Filter分为Gateway Filter和Global FilterGateway Fi...
2019-05-20 00:50:20
4071
1
原创 SpringCloudGateway笔记(1)-介绍与基础使用
Spring Cloud Gateway 介绍和基础使用简介Spring Cloud Gateway是Spring官方团队推出的网关框架,用于取代Spring Cloud Netflix ZuulSpring Cloud Gateway的特征:基于Spring Framework 5、Project Reactor和Spring Boot 2.0构建能够匹配任何请求属性上的路由。谓词...
2019-05-12 23:45:45
421
原创 SpringDataJPA笔记(8)-EntityManager
EntityManager,以及union查询,left join查询EntityManager是JPA中用于增删改查的接口,而通常我们使用的是Hibernate-EntityManagerHibernate-EntityManager实现了标准的JPA,可以把它看成hibernate-core和JPA之间的适配器,它并不直接提供ORM的功能,而是对hibernate-core进行封装,使得H...
2019-05-11 16:17:11
1835
原创 SpringDataJPA笔记(7)-Specification
SpringDataJPA-Specification使用Specification可以构建动态查询原生的使用起来有点复杂,这里推介一个别人封装好的工具包这里是github的地址https://github.com/wenhao/jpa-spec/blob/master/README_CN.md<!-- https://mvnrepository.com/artifact/com....
2019-05-11 00:27:51
720
原创 SpringDataJPA笔记(6)-value注解的使用
使用查询的时候可以使用value注解,也是一种视图查询1. 在类上面使用Lombok的value注解@Valuepublic class NameEntity { String name; Long id;}添加对应查询方法<T> List<T> findByAgeGreaterThan(int age, Class<T> type...
2019-05-09 23:21:01
626
原创 SpringDataJPA笔记(5)-子查询
SpringDataJPA-子查询子查询也是一种视图查询STEP1 构建视图类@Data@Entity@Subselect("select d.id as id, d.name as dog_name, c.name as cat_name from dog_tb d left join cat_tb c on d.id=c.id")@Synchronize({"dog_tb", "c...
2019-05-08 22:00:09
1584
原创 SpringDataJPA笔记(4)-命名查询与基础规则
命名查询与基本规则1. JPA可以根据函数名生成基本的查询语句,下表是支持的关键字KeywordSampleJPQL snippetAndfindByLastnameAndFirstname… where x.lastname = ?1 and x.firstname = ?2OrfindByLastnameOrFirstname… where x.last...
2019-05-07 22:50:28
345
原创 SpringDataJPA笔记(3)-基于SpringBoot基础用法
基于SpringBoot的基础用法STEP1. 引入POM依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId></dependency>...
2019-05-06 23:16:18
287
原创 SpringDataJPA笔记(2)-基于SpringBoot的配置项
基于SpringBoot的配置项大概整理了一下配置项说明spring.jpa.databasespring.jpa.database-platform设置数据库引擎spring.jpa.generate-ddl如果Hibernate自动配置被激活,那该标识就不会被使用,因为ddl-auto设置粒度更细| spring.jpa.hibernate.dd...
2019-05-05 23:54:49
917
原创 SpringDataJPA笔记(1)-基础概念和注解
SpringDataJPA的基础概念和注解一 JPA的介绍JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。Sun引入新的JPA ORM(Object Relational Mapping)规范出于两个原因:其一,简化现有Java EE和Java SE应用开发工作;...
2019-05-04 22:37:47
1132
原创 RabbitMQ笔记(九)-死信队列
死信交换机: DLX,dead-letter-exchange当消息在一个队列中变成死信 (dead message) 之后,它能被重新 publish 到另一个 队列消息变成死信的原因有: 1.消息被拒绝 (basic.reject / basic.nack) 并且 reQueue=false 2.消息 TTL 过期 3.队列达到最大长度了死信队列的使用场景...
2019-01-13 14:40:38
1738
原创 RabbitMQ笔记(八)-RabbitAdmin
使用代码配置队列,交换器和绑定通常可以直接使用RabbitAdmin默认情况下,当任何异常发生时,RabbitAdmin将立即停止处理所有声明;这可能会导致下游问题——例如,由于没有声明另一个队列(在错误队列之后定义的),侦听器容器无法初始化。可以通过将RabbitAdmin上的ignore-declaration-exceptions属性设置为true来修改此行为。这个选项指示RabbitA...
2019-01-13 14:37:45
3590
原创 RabbitMQ笔记(七)-SimpleMessageListenerContainer和DirectMessageListenerContainer
在版本2.0之前的版本中,只有一种MessageListenerContainer—SimpleMessageListenerContainer;2.0之后有第二个容器——DirectMessageListenerContainerSimpleMessageListenerContainer默认情况下,侦听器容器将启动单个使用者,该使用者将从队列接收消息。在检查上一节中的表时,您将看到许多...
2019-01-13 14:37:02
29269
3
原创 RabbitMQ笔记(六)-BlockedListener
BlockedListener 是监听连接阻塞情况的监听器这个监听器在服务器内存报警或者硬盘报警的情况下,使用发送接口会产生阻塞,如果发送和接受等使用同一个连接,则会都阻塞,因此我们应该为消费者和生产者使用不同的CachingConnectionFactory,或者设置rabbitTemplate.setUsePublisherConnection(true);BlockedListener的...
2019-01-13 14:36:08
1922
原创 RabbitMQ笔记(五)-RabbitTemplate
使用RabbitTemplate进行收发消息将十分的方便首先配置bean @Bean public RabbitTemplate rabbitTemplate(CachingConnectionFactory factory){ log.info("caching factory: {}", factory.getChannelCacheSize()); ...
2019-01-13 14:34:11
35824
原创 RabbitMQ笔记(四)-CachingConnectionFactory
通常我们使用RabbitTemplate来进行简单的收发消息,而RabbitTemplate使用CachingConnectionFactory作为连接工厂,CachingConnectionFactory配置bean@Beanpublic CachingConnectionFactory cachingConnectionFactory(){ CachingConnectionF...
2019-01-13 14:33:16
19320
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人