spring
文章平均质量分 70
hellozhxy
这个作者很懒,什么都没留下…
展开
-
spring为什么使用三级缓存而不是两级?
spring三级缓存解决循环依赖问题转载 2023-01-29 19:08:25 · 262 阅读 · 0 评论 -
Spring Boot(2.1.2.RELEASE) + Spring Cloud (Finchley.RELEASE)搭建服务注册和发现组件Eureka
前言:由于版本原因,部分关于Spring Cloud的书中使用的是Spring Boot 1.x 版本,很多配置或名称在新版本中已经发生了改变。此篇文章记录的是使用较新的Spring Boot 2.x和Spring Cloud Finchley.RELEASE搭建服务注册和发现组件Eureka的步骤(部分代码以截图形式展现)。一、搭建Eureka1. 编写 Eureka Server使用IDEA创建一个新的项目。搭建Eureka服务注册和发现组件1.png选择maven->Ne转载 2022-01-07 17:37:43 · 579 阅读 · 0 评论 -
SpringBoot2.1+SpringCloud:注册中心搭建(Eureka)
一、版本说明:SpringBoot:2.1.6.RELEASESpringCloud:Greenwich.RELEASE二、作用及功能说明:注册中心:是将多个微服务统计进行管理,主要起注册及发现的作用,是微服务架构的一个总要环节,是多个微服务之间通讯的保障及支撑;Eureka:可以做为服务端,同时也可以作为客户端,支持高可用;三、Maven主要配置说明 1 <modelVersion>4.0.0</modelVersion> 2 <paren转载 2022-01-02 16:29:44 · 459 阅读 · 0 评论 -
@FeignClient 接口调用
在项目的启动文件加入:@EnableFeignClients 注解, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigur转载 2021-12-09 17:44:20 · 1158 阅读 · 0 评论 -
MapStruct使用详解
阅读目录:序 一、准备工作 1.1、了解@Mapper 注解 1.2、依赖包 二、先简单玩一把 2.1、定义实体类以及被映射类 2.2、定义接口: 2.3、使用 2.4、查看编译结果 2.5、浏览器查看结果 三、不简单的情况 3.1、类型不一致 3.2、字段名不一致 3.3、属性是枚举类型 源代码阅读正文:我们都知道,随着一个工程的越来越成熟,模块划分会越来越细,其中实体类一般存于 domain 之中,但 domain 工程最好不要被其他工转载 2021-11-18 16:16:44 · 13446 阅读 · 0 评论 -
Java实体映射工具MapStruct
声明:1、DO(业务实体对象),DTO(数据传输对象)。2、我的代码中用到了 Lombok ,不了解的可以自行了解一下,了解的忽略这条就好。123在一个成熟的工程中,尤其是现在的分布式系统中,应用与应用之间,还有单独的应用细分模块之后,DO 一般不会让外部依赖,这时候需要在提供对外接口的模块里放 DTO 用于对象传输,也即是 DO 对象对内,DTO对象对外,DTO 可以根据业务需要变更,并不需要映射 DO 的全部属性。这种 对象与对象之间的互相转换,就需要有一个专门用来解决转换问题的工具..转载 2021-11-18 16:06:25 · 230 阅读 · 0 评论 -
flowable 流程引擎总结
最近公司使用Flowable开发了自己的OA系统,因此对Flowable的相关内容进行如下总结一、Flowable 是什么目前最新版是Flowable 6.4.2(2019年07月26日)官网地址:https://www.flowable.org/github地址:https://github.com/flowableFlowable 是一个使用 Java 编写的轻量级业务流程引擎,使用 Apache V2 license 协议开源。2016 年 10 月,Activiti 工作流引.转载 2021-11-18 11:25:15 · 26138 阅读 · 1 评论 -
activity(流程引擎)从零入门到实战学习
activity(流程引擎)从零入门到实战学习1.什么是流程引擎?2.为什么需要学习流程引擎?3.为什么选择activiti?本编文章将详细介绍什么是流程引擎,为什么学习,以及为什么选择activiti作为学习的开源框架。并且将介绍本专栏的一个详细学习目录。1.什么是流程引擎?流程引擎说白了就是用来驱动业务按照我设定的固定流程去流转的东西,在复杂多变的业务情况下,使用既定的流程能够大大降低我们设计业务的成本,并且保证了我们业务执行的准确性。eg1 : 企业常见审批eg2:网上购物业务转载 2021-11-17 21:50:04 · 1719 阅读 · 2 评论 -
springboot activiti工作流简单示例
最近一直研究springboot,根据工作需求,工作流需要作为一个单独的微服务工程来提供给其他服务调用,现在简单的写下工作流(使用的activiti)微服务的搭建与简单使用jdk:1.8数据库:mysql 5.7IDE:eclipsespringboot:1.5.8activiti:6.0.01.新建空白的maven微服务架构新建maven项目的流程不在阐述,这里添加上activiti、myslq连接的依赖,只贴主要代码pox.xml <projec.转载 2021-11-17 21:24:22 · 972 阅读 · 0 评论 -
SpringBoot中@EventListener注解的使用
一:背景在开发工作中,会遇到一种场景,做完某一件事情以后,需要广播一些消息或者通知,告诉其他的模块进行一些事件处理,一般来说,可以一个一个发送请求去通知,但是有一种更好的方式,那就是事件监听,事件监听也是设计模式中发布-订阅模式、观察者模式的一种实现。观察者模式:简单的来讲就是你在做事情的时候身边有人在盯着你,当你做的某一件事情是旁边观察的人感兴趣的事情的时候,他会根据这个事情做一些其他的事,但是盯着你看的人必须要到你这里来登记,否则你无法通知到他(或者说他没有资格来盯着你做事情)。对于 Spring转载 2021-10-29 14:24:15 · 1096 阅读 · 0 评论 -
@Async注解配合@EnableAsync注解使用
@Async为异步注解,放到方法上,表示调用该方法的线程与此方法异步执行,需要配合@EnableAsync注解使用。下面通过示例演示一、没有@Async注解,没有异步执行时1、创建一个普通类CountNumber,并注入到IOC容器中package com.example.demo;import org.springframework.scheduling.annotation.Async;import org.springframework.stereotype.Component;@C转载 2021-10-29 14:10:57 · 533 阅读 · 0 评论 -
@RequiredArgsConstructor用法
在我们写controller或者Service层的时候,需要注入很多的mapper接口或者另外的service接口,这时候就会写很多的@Autowired注解,代码看起来很乱lombok提供了一个注解:@RequiredArgsConstructor(onConstructor =@_(@Autowired))写在类上可以代替@Autowired注解,需要注意的是在注入时需要用final定义,或者使用@notnull注解...原创 2021-10-28 21:40:02 · 1858 阅读 · 0 评论 -
注解 @EnableFeignClients 工作原理
概述源代码解析注解`@EnableFeignClients`:扫描和注册`feign`客户端`bean`定义`FeignClientsRegistrar` : `feign`客户端注册器`#registerBeanDefinitions` -- 注册`feign`客户端配置和`feign`客户端`#registerDefaultConfiguration`-- 注册`feign`客户端缺省配置`#registerClientConfiguration` -- 注册`feign`客户端配置`#r转载 2021-10-19 21:20:49 · 729 阅读 · 0 评论 -
FeignClient注解及参数
一、FeignClient注解 FeignClient注解被@Target(ElementType.TYPE)修饰,表示FeignClient注解的作用目标在接口上 1 2 3 4 5 @FeignClient(name ="github-client", url ="https://api.github.com", configuration = GitHubExampleConfig.class) publicinter...转载 2021-10-14 21:04:00 · 1057 阅读 · 0 评论 -
2021-10-12Spring缓存注解@Cacheable、@CacheEvict、@CachePut使用
从3.1开始,Spring引入了对Cache的支持。其使用方法和原理都类似于Spring对事务管理的支持。Spring Cache是作用在方法上的,其核心思想是这样的:当我们在调用一个缓存方法时会把该方法参数和返回结果作为一个键值对存放在缓存中,等到下次利用同样的参数来调用该方法时将不再执行该方法,而是直接从缓存中获取结果进行返回。所以在使用Spring Cache的时候我们要保证我们缓存的方法对于相同的方法参数要有相同的返回结果。使用Spring Cache需要我们做两方面的事:n...转载 2021-10-12 14:12:56 · 165 阅读 · 0 评论 -
spring注解:FilterType 指定过滤的规则
@Configuration@ComponentScan(value = "com.componentscan", useDefaultFilters = false, includeFilters = { @Filter(type = FilterType.ANNOTATION, classes = {Controller.class}) , @Filter(type=FilterType.ASSIGNABLE_TYPE,classe...转载 2021-10-08 13:48:49 · 2403 阅读 · 0 评论 -
Spring注解中@Configuration和@Configurable的区别
前言今天在写注解时,不小心把@Configuration写成了@Configurable,这两个长得很像,所以顺便探究下,有什么区别。@Configuration该注解是可以用来替代XML文件。以前我们配置bean时,都是写在applicationContext.xml文件中的。有了这个注解后,我们就可以编写一个类在其上面加上该注解。即配置类。在配置类中可以在方法上加@Bean注解定义其中的Bean@Configurable现在假设,我们想在非Spring管理的类中使用依赖注入;比如:转载 2021-09-18 15:08:26 · 1051 阅读 · 0 评论 -
SpringCloud底层原理
SpringCloud框架针对这个架构图我分层介绍一下:1、是web服务器的选型,这个我选择的是nginx+keepalived,haproxy也是一个选择,但是haproxy在反向代理处理跨域访问的时候问题很多。所以我们nginx有些地方做了keep-alive模式处理,减少了三次握手的次数,提高了连接效率。keepalived做nginx的负载,虚拟一个vip对外,两个nginx做高可用,nginx本身反向代理zuul集群。2、api gateway,这里的zuul很多人诟病,说是速度慢推转载 2021-09-01 16:55:00 · 472 阅读 · 0 评论 -
Spring Cloud原理详解
概述毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术。不过大多数讲解还停留在对Spring Cloud功能使用的层面,其底层的很多原理,很多人可能并不知晓。因此本文将通过大量的手绘图,给大家谈谈Spring Cloud微服务架构的底层原理。实际上,Spring Cloud是一个全家桶式的技术栈,包含了很多组件。本文先从其最核心的几个组件入手,来剖析一下其底层的工作原理。也就是Eureka、Ribbon、Feign、Hystrix、Zuul这几个组件。一转载 2021-08-20 17:46:35 · 1041 阅读 · 0 评论 -
SpringCloud实现原理图
引言面试中面试官喜欢问组件的实现原理,尤其是常用技术,我们平时使用了SpringCloud还需要了解它的实现原理,这样不仅起到举一反三的作用,还能帮助轻松应对各种问题及有针对的进行扩展。以下是课程讲到的部分原理附图,现在免费开放给大家,让大家轻松应对原理面试题。服务注册发现组件Eureka工作原理服务网关组件Zuul工作原理跨域时序图Eureka与Ribbon整合工作原理解决分布式一致性级联故障流程断路器组件Hystrix工作原理分布式追转载 2021-08-20 17:28:56 · 314 阅读 · 0 评论 -
几个SpringCloud常见面试题及答案
全文目录 什么是微服务? 微服务之间如何独立通讯的? SpringCloud 和 Dubbo 有哪些区别? SpringBoot 和 SpringCloud 之间关系? 什么是熔断?什么是服务降级? 微服务的优缺点是什么?说下你在项目中碰到的坑。 eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别? 你所知道微服务的技术栈有哪些?列举一二。 什么是微服务架构? 1.什么是微服务?单个轻转载 2021-08-19 11:27:53 · 8074 阅读 · 0 评论 -
Spring boot 配置文件 application.yml和 bootstrap.yml区别
SpringBoot默认支持properties和YAML两种格式的配置文件。前者格式简单,但是只支持键值对。如果需要表达列表,最好使用YAML格式。SpringBoot支持自动加载约定名称的配置文件,例如application.yml。如果是自定义名称的配置文件,就要另找方法了。可惜的是,不像前者有@PropertySource这样方便的加载方式,后者的加载必须借助编码逻辑来实现。一、bootstrap.yml(bootstrap.properties)与application.yml(applica转载 2021-06-17 17:29:23 · 847 阅读 · 0 评论 -
使用Spring特性优雅书写业务代码
作者:阿里巴巴淘系技术链接:https://www.zhihu.com/question/60761181/answer/1737592739来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。分享一套使用Spring特性优雅书写业务代码的方法。大家在日常业务开发工作中相信多多少少遇到过下面这样的几个场景:当某一个特定事件或动作发生以后,需要执行很多联动动作,如果串行去执行的话太耗时,如果引入消息中间件的话又太重了; 想要针对不同的传参执行不同的策略,也就是.转载 2021-02-24 10:39:53 · 208 阅读 · 0 评论 -
@Transactional 注解的失效场景
作者:码农开花链接:https://zhuanlan.zhihu.com/p/351260443来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。引言有人咨询了一个问题,说自己之前面试被问@Transactional注解哪些场景下会失效,一时语塞致使面试失败。所以今天简单的和大家分享一下@Transactional相关的知识。@Transactional 注解相信大家并不陌生,平时开发中很常用的一个注解,它能保证方法内多个数据库操作要么同时成功、要么同时失败.转载 2021-02-24 10:21:04 · 144 阅读 · 0 评论 -
springboot启动流程
源码版本作者Spring Boot是基于2.4.0。每个版本有些变化,读者尽量和我保持一致,以防源码有些出入。从哪入手?相信很多人尝试读过Spring Boot的源码,但是始终没有找到合适的方法。那是因为你对Spring Boot的各个组件、机制不是很了解,研究起来就像大海捞针。至于从哪入手不是很简单的问题吗,当然主启动类了,即是标注着@SpringBootApplication注解并且有着main()方法的类,如下一段代码:@SpringBootApplicationpubli..转载 2020-12-18 19:14:38 · 769 阅读 · 0 评论 -
使用@Async异步注解导致该Bean在循环依赖时启动报BeanCurrentlyInCreationException异常的根本原因分析,以及提供解决方案
前言今天在自己工程中使用@Async的时候,碰到了一个问题:Spring循环依赖(circular reference)问题。 或许刚说到这,有的小伙伴就会大惊失色了。Spring不是解决了循环依赖问题吗,它是支持循环依赖的呀?怎么会呢?不可否认,在这之前我也是这么坚信的,而且每次使用得也屡试不爽。倘若你目前也和我有一样坚挺的想法,那么相信本文能让你大有收货~~。不得不提,关于@Async的使用姿势,请参阅: 【小家Spring】Spring异步处理@Async的使用以及原理、源码分析(@Ena转载 2020-12-03 17:45:36 · 739 阅读 · 0 评论 -
Spring是如何利用“三级缓存“巧妙解决Bean的循环依赖问题
前言循环依赖:就是N个类循环(嵌套)引用。通俗的讲就是N个Bean互相引用对方,最终形成闭环。用一副经典的图示可以表示成这样(A、B、C都代表对象,虚线代表引用关系):注意:其实可以N=1,也就是极限情况的循环依赖:自己依赖自己另需注意:这里指的循环引用不是方法之间的循环调用,而是对象的相互依赖关系。(方法之间循环调用若有出口也是能够正常work的)可以设想一下这个场景:如果在日常开发中我们用new对象的方式,若构造函数之间发生这种循环依赖的话,程序会在运行时一直循环调用最终导致内转载 2020-12-03 16:36:49 · 673 阅读 · 0 评论 -
使用@Async异步注解导致该Bean在循环依赖时启动报BeanCurrentlyInCreationException异常的根本原因分析,以及提供解决方案【享学Spring】
前言今天在自己工程中使用@Async的时候,碰到了一个问题:Spring循环依赖(circular reference)问题。 或许刚说到这,有的小伙伴就会大惊失色了。Spring不是解决了循环依赖问题吗,它是支持循环依赖的呀?怎么会呢?不可否认,在这之前我也是这么坚信的,而且每次使用得也屡试不爽。倘若你目前也和我有一样坚挺的想法,那么相信本文能让你大有收货~~。不得不提,关于@Async的使用姿势,请参阅: 【小家Spring】Spring异步处理@Async的使用以及原理、源码分析(@Ena转载 2020-11-18 11:38:44 · 242 阅读 · 0 评论 -
spring同类调用事务不生效-原因及三种解决方式
spring提供的声明式事务注解@Transactional,极大的方便了开发者管理事务,无需手动编写开启、提交、回滚事务的代码。但是也带来了一些隐患,如果注解使用不当,可能导致事务不生效,最终导致脏数据也入库。如果在同一个类直接调用事务方法,就会导致事务不生效,示例如下public class StudentServiceImpl implements StudentService { @Autowired private StudentMapper studentMa.转载 2020-11-17 21:01:12 · 12716 阅读 · 0 评论 -
Spring/SpringBoot常用注解总结
目录如下,内容有点多:1. @SpringBootApplication这里先单独拎出@SpringBootApplication 注解说一下,虽然我们一般不会主动去使用它。注:这个注解是 Spring Boot 项目的基石,创建 SpringBoot 项目之后会默认在主类加上。我们可以把 @SpringBootApplication看作是 @Configuration、@EnableAutoConfiguration、@ComponentScan 注解的集合。...转载 2020-06-18 19:05:23 · 446 阅读 · 0 评论 -
spring-statemachine有限状态机
大中台战略下,中台将公司业务的公共能力下沉,并采用更加合理、可复用的架构和技术来实现这些基础能力。在电商行业内,将面临货物的采购、商品上架、交易发生、订单状态变化、客服介入等大量状态维护。每个状态之间具有很强的逻辑关联关系,比如:退款操作在发货前和发货后将是完全不同的流程,如图1订单退款流程。图1 退款流程图由此可见,对于复杂状态的管理是一个业务依赖,需求多变的场景。在公司初创期...原创 2020-01-14 20:45:21 · 1245 阅读 · 0 评论 -
spring mvc 返回json数据的四种方式
一.返回ModelAndView,其中包含map集/* * 返回ModelAndView类型的结果 * 检查用户名的合法性,如果用户已经存在,返回false,否则返回true(返回json数据,格式为{"valid",true}) */ @RequestMapping(value = "/checkNameExistsMethod2", produc...转载 2018-07-25 16:01:50 · 1665 阅读 · 1 评论 -
ThreadLocal父子线程传递实现方案
前言介绍InheritableThreadLocal之前,假设对 ThreadLocal 已经有了一定的理解,比如基本概念,原理,如果没有,可以参考:ThreadLocal源码分析解密.在讲解之前我们先列举有关ThreadLocal的几个关键点每一个Thread线程都有属于自己的ThreadLocalMap,里面有一个弱引用的Entry(ThreadLocal,Object),如下1234...转载 2018-07-13 13:54:35 · 759 阅读 · 0 评论 -
【Spring 5】响应式Web框架实战(下)
- 【Spring 5】响应式Web框架前瞻 - 响应式编程总览 - 【Spring 5】响应式Web框架实战(上)1 回顾上篇介绍了如何使用Spring MVC注解实现一个响应式Web应用(以下简称RP应用),本篇接着介绍另一种实现方式——Router Functions。2 实战2.1 Router FunctionsRouter Functions是Spring 5新引入的一套Reactiv...转载 2018-07-04 20:04:14 · 452 阅读 · 0 评论 -
【Spring 5】响应式Web框架实战(上)
前情概要: - 【Spring 5】响应式Web框架前瞻 - 响应式编程总览1 回顾通过前两篇的介绍,相信你对响应式编程和Spring 5已经有了一个初步的了解。下面我将以一个简单的Spring 5应用为例,介绍如何使用Spring 5快速搭建一个响应式Web应用(以下简称RP应用)。2 实战2.1 环境准备首先,从GitHub下载我的这个示例应用,地址是https://github.com/em...转载 2018-07-04 20:02:32 · 850 阅读 · 0 评论 -
【Spring 5】响应式Web框架前瞻
1 响应式宣言和敏捷宣言一样,说起响应式编程,必先提到响应式宣言。We want systems that are Responsive, Resilient, Elastic and Message Driven. We call these Reactive Systems. - The Reactive Manifesto图片出处:The Reactive Manifesto不知道是不是为了...转载 2018-07-04 20:00:39 · 207 阅读 · 0 评论 -
Java JDK代理、CGLIB、AspectJ代理分析比较
前言什么是代理,在Design patterns In java这个本书中是这样描述的,简单的说就是为某个对象提供一个代理,以控制对这个对象的访问。在不修改源代码的基础上做方法增强,代理是一种设计模式,又简单的分为两种。静态代理:代理类和委托类在代码运行前关系就确定了,也就是说在代理类的代码一开始就已经存在了。 动态代理:动态代理类的字节码在程序运行时的时候生成。静态代理先来看一个...转载 2018-07-17 14:22:45 · 492 阅读 · 0 评论 -
响应式Spring的道法术器(Spring WebFlux 快速上手 + 全面介绍)
1. Spring WebFlux 2小时快速入门Spring 5 之使用Spring WebFlux开发响应式应用。lambda与函数式(15min)Reactor 3 响应式编程库(60min)Spring Webflux和Spring Data Reactive开发响应式应用(45min)通过以上内容相信可以对Spring 5.0 推出的响应式开发有了初步的体会。如果希望有更加深入的了解,欢...转载 2018-07-04 14:42:31 · 808 阅读 · 0 评论 -
(2)响应式流——响应式Spring的道法术器
本系列文章索引:《响应式Spring的道法术器》。前情提要: 什么是响应式编程1.2 响应式流上一节留了一个坑——为啥不用Java Stream来进行数据流的操作? 原因在于,若将其用于响应式编程中,是有局限性的。比如如下两个需要面对的问题:Web 应用具有I/O密集的特点,I/O阻塞会带来比较大的性能损失或资源浪费,我们需要一种异步非阻塞的响应式的库,而Java Stream是一种同步API。假...转载 2018-07-04 14:39:57 · 255 阅读 · 1 评论 -
使用spring boot +WebSocket实现(后台主动)消息推送
前言:使用此webscoket务必确保生产环境能兼容/支持!使用此webscoket务必确保生产环境能兼容/支持!使用此webscoket务必确保生产环境能兼容/支持!主要是tomcat的兼容与支持。有个需求:APP用户产生某个操作,需要让后台管理系统部分人员感知(表现为一个页面消息)。最早版本是后台管理系统轮训,每隔一段时间轮训一次,由于消息重要,每隔几秒就查一次。这样做明显很不雅!会消耗大量资...转载 2018-06-27 17:31:22 · 434 阅读 · 0 评论