Spring学习整理
文章平均质量分 81
帅喵
一只帅喵
展开
-
Spring Validation使用指南
Bean Validation 中constraints。Spring Validation使用指南。原创 2022-10-05 16:12:23 · 1498 阅读 · 0 评论 -
本地缓存组件
GuavaCache 并不保证在过期时间到了之后立刻删除该 Key,如果你此时去访问了这个 Key,它会检测是不是已经过期,过期就删除它,所以过期时间到了之后你去访问这个 Key 会显示这个 Key 已经被删除,但是如果你不做任何操作,那么在 时间 到了之后也许这个 Key 还在内存中。默认情况下,对每个不在缓存中的键,getAll方法会单独调用CacheLoader.load来加载缓存项。返回的映射包含已缓存的条目,以及新加载的条目;返回与此缓存中的键关联的值,如果没有键的缓存值,则返回null。原创 2022-09-23 00:08:35 · 299 阅读 · 0 评论 -
Ribbon学习
Ribbon学习什么是Ribbon?Spring Cloud Ribbon是基于Netflix Ribbon实现的一套,Ribbon客户端组件提供一系列的完善的配置,如超时,重试等。通过获取到服务提供的所有机器实例,Ribbon会自动基于某种规则(轮询,随机)去调用这些服务。Ribbon也可以实现我们自己的负载均衡算法。客户端的负载均衡例如spring cloud中的Ribbon,客户端会有一个服务器地址列表,在发送请求前通过负载均衡新算法选择一个服务器,然后进行访问,这是客户端负载均衡;原创 2022-08-23 23:28:04 · 200 阅读 · 0 评论 -
Nacos学习
服务注册:Nacos Client会通过发送REST请求的方式向Nacos Server注册自己的的服务,提供自身的元数据,比如ip地址、端口等信息。Nacos Server接收到注册请肯求后,就会把这些元数据信息存储在一个双层的内存Map中。服务心跳:在服务注册后,Nacos Client会维护一个定时心跳来持续通知NacosS Server,说明服务一直处于可用状态,防止被剔除。默认**5s**发送一次心跳。服务同步:Nacos Server集群之间会互相同步服务实例,用来保证服务信息的一致性。..原创 2022-08-22 23:56:11 · 819 阅读 · 0 评论 -
Spring Cloud Gateway学习
自定义路由断言工厂需要继承AbstractRoutePredicateFactory类,重写apply方法的逻辑,在apply方法中可以通过exchange.getRequest()拿到ServletHttpRequest对象,从而可以获取到请求的参数、请求方式、请求头等信息。必须Spring组件Bean类必须加上作为结尾必须继承AbstractRoutePredicateFactory类必须在类中实现一个静态内部类,声明属性来接收配置文件中对应的断言信息。原创 2022-08-15 23:25:18 · 593 阅读 · 1 评论 -
Sentinel基础学习
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。..................原创 2022-08-11 23:31:13 · 508 阅读 · 0 评论 -
Hystrix学习
降级是指,当请求超时、资源不足等情况发生时进行服务降级处理,不调用真实服务逻辑,而是快速失败直接返回托底数据,保证服务链条的完整,避免服务雪崩。解决服务雪崩效应,都是避免客户端请求服务端时,出现服务调用错误或网络问题。所有的处理手法都是在客户端中实现。超时降级、资源不足时(线程或信号量)降级,降级后可以配合降级接口返回托底数据。保证服务出现问题整个项目还可以继续运行。本文示例是在OpenFeign教程上做修改,链接地址:https://blog.csdn.net/liwenyang1992/article/原创 2022-08-09 22:28:16 · 602 阅读 · 0 评论 -
OpenFeign学习
OpenFeign是Spring Cloud的一个声明性HTTP客户端(出自于Netflix的Feign),它简化了我们与其他服务交互的方式。Spring Cloud对OpenFeign进行了增强,使得Spring Cloud OpenFeign支持Spring MVC注解。同时,Spring Cloud整合了Ribbon和 Eureka注册中心(Nacos也可以),这让 Spring Cloud OpenFeign的使用更加方便。.........原创 2022-08-04 21:44:20 · 427 阅读 · 0 评论 -
Redis操作工具类
核心Redis操作工具类RedisOperateUtil如下,主要包括Redis键(Key)、字符串(String)、哈希(Hash)、列表(List)、集合(Set)等常用的操作。原创 2022-01-18 23:51:34 · 9428 阅读 · 0 评论 -
Kafka 2.8.0 学习
Kafka基础知识,Kafka-Client的使用,Spring Boot 整合Kafka原创 2021-12-06 23:06:58 · 1714 阅读 · 0 评论 -
单元测试Mock工具TestableMock使用
TestableMock Mock工具使用SpringBoot单元测试H2数据库单元测试Junit原创 2021-12-01 20:59:35 · 3211 阅读 · 0 评论 -
QLExpress入门学习
QLExpressgithub地址:https://github.com/alibaba/QLExpress推荐博文:https://blog.csdn.net/YuYunTan/article/details/101436910本文通过规则引擎实现用户输入规则,根据用户规则过滤出用户想要的数据。数据库初始化,创建testdb数据库:DROP TABLE IF EXISTS book_info_t;CREATE TABLE book_info_t ( book_id INT PRIMARY原创 2021-11-03 22:15:24 · 2495 阅读 · 0 评论 -
Idea编译器Spring Profile与Maven Profile联动
Idea工具使用Maven多Profile运行示例如下:SpringBoot在两个Profile下分别连接两个不同的数据库PostgreSQL和MySQLMaven在两个Profile下分别依赖PostgreSQL和MySQL的驱动数据库及数据准备见:https://blog.csdn.net/liwenyang1992/article/details/120311490application.properties文件如下:使用@变量@作为配置占位符#业务变量,观察打包是否被替换busines原创 2021-10-18 23:25:33 · 365 阅读 · 0 评论 -
SpringBoot 2 MyBatis Druid 多数据源(二)
SpringBoot 2 MyBatis Druid 多数据源(二)建库建表等准备请看:https://blog.csdn.net/liwenyang1992/article/details/120311490Druid使用文档:https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98 (关注 32. 如何在 Spring Boot 中配置数据库密码加密?)Druid加密指导:https://github.co原创 2021-09-17 15:10:37 · 236 阅读 · 0 评论 -
SpringBoot多数据源动态切换,不影响业务逻辑正常运行,服务高可用
SpringBoot多数据源动态切换,不影响业务逻辑正常运行,服务高可用本文使用Spring Boot 2.4.10版本和MyBatis实现多数据源动态切换,当主库MySQL宕机后自动切换到容灾PostgreSQL数据库。数据库及数据表示例如下:MySQL数据库(主库):创建goodsdb数据库,创建book_t数据表并初始化数据。DROP TABLE IF EXISTS book_t;CREATE TABLE book_t ( book_id INT PRIMARY KEY AUTO_IN原创 2021-09-15 16:30:51 · 1645 阅读 · 4 评论 -
ABAC权限控制学习
ABAC模型什么是ABAC模式?ABAC是基于属性的访问控制,可以使用主体、客体或动作的属性,而不是字符串本身来控制访问。 您之前可能就已经听过 XACML ,是一个复杂的 ABAC 访问控制语言。 与XACML相比,Casbin的ABAC非常简单:在ABAC中,可以使用struct(或基于编程语言的类实例) 而不是字符串来表示模型元素。例如,ABAC的官方实例如下:[request_definition]r = sub, obj, act[policy_definition]p = sub转载 2021-08-05 13:50:51 · 2147 阅读 · 0 评论 -
Zookeeper学习
Zookeeper工作机制Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper 就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应。服务端启动时去注册信息(创建都是临时节点)获取到氮气在线服务器列表,并且注册监听服务器节点下线服务器节点上下线通知process(){重新再去获取服务器列表,并注册监听}Zookeeper=文件系统+通知机制原创 2021-07-21 23:26:45 · 86 阅读 · 0 评论 -
SpringBoot与任务学习
异步任务在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的;但是在处理与第三方系统交互的时候,容易造成响应迟缓的情况,之前大部分都是使用多线程来完成此类任务。在Spring 3.x之后,就已经内置了@Async来完美解决这个问题。通过@EnableAsync和@Async两个注解实现:创建一个Controller用于验证:AsyncControllerimport java.time.LocalDateTime;import org.springframework.beans.f原创 2021-07-21 21:40:32 · 79 阅读 · 0 评论 -
消息队列学习笔记
消息队列学习笔记基本概念使用场景:通过消息服务中间件来提升系统异步通信、扩展解耦能力。消息服务中两个重要概念:消息代理(message broker)和目的地(destination):当消息发送者发送消息以后,将由消息代理接管,消息代理保证消息传递到指定目的地。消息队列主要有两种形式的目的地:队列(queue):点对点消息通信(point-to-point)主题(topic):发布(publish)/订阅(subscribe)消息通信消息队列两种模式:点对点式:消息发送者发送原创 2021-07-15 23:40:44 · 93 阅读 · 0 评论 -
Spring Cache学习
Spring Cache示例环境搭建:数据表创建及数据初始化:-- 创建表DROP TABLE IF EXISTS student_t;CREATE TABLE student_t ( id INT AUTO_INCREMENT PRIMARY KEY, student_id CHAR(8) NOT NULL, student_name VARCHAR(64) NOT NULL, age INT NOT NULL );-- 初始化数据INSERT INTO student_t (id原创 2021-07-10 21:27:26 · 284 阅读 · 1 评论 -
SpringBoot整合Json(Fastjson、Gson)
SpringBoot整合Fastjson:pom.xml修改,排除默认Jackson,引入Fastjson: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions>原创 2021-05-22 13:27:35 · 484 阅读 · 2 评论 -
JAX-RS中使用HttpServletRequest / HttpServletResponse
CXF配置xxx.services.xml文件暴露服务<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxrs="http://cxf.apache.org/jaxrs" xs原创 2021-03-11 11:16:39 · 921 阅读 · 0 评论 -
SpringBoot 2 MyBatis Druid 多数据源(一)
Spring Boot 2 + MyBatis + Druid 同时连接PostgreSQL和MySQL数据库。分别查看本地安装的 PostgreSQL中r_user表,MySQL中user两张系统表的列信息数据。SQL参考如下:SELECT info_t.table_catalog AS tableCatalog, info_t.table_schema AS tableSchema, info_t.table_name AS tableName, info_t.column_name原创 2021-01-20 23:00:44 · 285 阅读 · 0 评论 -
SpringBoot整合Redis,Redis突然宕机,不影响业务逻辑正常运行
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-pool2 --><dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId></dependency>创建SpringBoot项目https://start.原创 2020-12-27 00:50:54 · 3431 阅读 · 2 评论 -
RestTemplate发送带请求头的Json的Post请求Utils工具类
RestTemplate发送带请求头的Json的Post请求import java.time.Duration;import java.util.Map;import java.util.Optional;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.boot.web.client.RestTemplateBuilder;import org.springframewor原创 2020-07-29 20:29:24 · 1361 阅读 · 0 评论 -
Maven 编译 Spring Boot jar包(eclipse)并在服务器(Linux/Windows)上运行
完成项目开发测试 在项目的pom.xml文件中增加构建配置:<build> <!-- 定义项目打包的名字,可以不写,根据具体项目来 --> <finalName>项目名称</finalName> <defaultGoal>package</defaultGoal> <plugins> <!-...原创 2019-06-16 21:44:24 · 354 阅读 · 0 评论 -
Spring 增强处理Advice
Before、AfterReturning、AfterThrowing、After、Around不管配置哪种Advice,都需要指定2个属性:method:指定将哪个方法转换成Advice。 pointcut或pointcut-ref:pointcut直接指定切入点表达式;pointcut-ref引入已有的切入点表达式。Before:在目标执行之前织入的Advice。AfterRe...原创 2019-03-10 20:17:40 · 651 阅读 · 0 评论 -
Spring AOP (面向切面编程)
主要用于事务控制、权限检查、日志…等分类(按修改的时机):静态AOP实现:AOP框架在编译阶段即实现对目标类的修改(增强),生成静态的AOP代理类(生成*.class文件已经被改掉了,需要使用特定的编辑器)。以AspectJ(需要安装 java -jar aspectj-1.9.2.jar,并添加环境变量和CLASSPATH(aspectjrt.jar、aspectjtools.jar))...原创 2019-03-10 20:14:13 · 129 阅读 · 0 评论 -
Spring SpEL:Spring 3.0
SpEL:Spring 3.0引入可以独立使用、用于计算表达式的值涉及3个接口:org.springframework.expression.ExpressionParser:负责解析spEL表达式,返回一个Expression对象。org.springframework.expression.Expression:该接口的实例代表一个表达式。org.springframewo...原创 2019-03-10 20:08:00 · 125 阅读 · 0 评论 -
Spring 基于Schema的简化配置
首先引入相关Schema<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:p="http://www.springframework.org/schema/p"xmlns:c="http://www.springf原创 2019-03-10 20:03:34 · 141 阅读 · 0 评论 -
Spring IOC 访问属性及方法
调用getter方法:org.springframework.beans.factory.config.PropertyPathFactoryBeangetter方法要求:实例方法;有返回值;不能有参数setter方法要求:实例方法;无返回值;只能一个参数<bean id=""class="org.springframework.beans.factory.config.P...原创 2019-03-10 19:57:27 · 155 阅读 · 0 评论 -
Spring IOC 基础整理
IOC(控制反转):从组件的角度来说DI(依赖注入):从容器的角度说Bean加载:ApplicationContext 默认支持预加载(就是spring在创建容器的时候,就会自动创建的singleton bean ,并立即根据property调用setter方法),可在bean元素上使用lazy-int="true"关闭,或beans上使用default-lazy-int="true"关闭...原创 2019-03-10 19:53:04 · 130 阅读 · 0 评论 -
MyBatis Generator 逆向工程使用
创建resources文件及对应生成的包pom.xml中引入必要的包:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4....原创 2019-03-13 21:33:48 · 174 阅读 · 0 评论