SpringBoot
文章平均质量分 67
SpringBoot相关
怎么又有bug单
走走停停
展开
-
Spring核心接口InitializingBean
Spring核心接口InitializingBean原创 2022-11-09 10:55:00 · 483 阅读 · 0 评论 -
简述eventHandler 单机jvm内部系统通知实现
eventbus简述原创 2022-09-24 11:31:07 · 173 阅读 · 0 评论 -
你了解spring的aware机制吗?
我们在谈到 Spring 解耦能力的时候,大部分其实是在讲 Spring 的 IOC 实现控制反转和依赖注入。但在 Spring 的思想中,解耦并不只是业务代码间的解耦,还包括业务代码与框架间的解耦,Spring 想要做到业务代码对框架的无感知。所以 Spring 有意识的隔离了框架代码和业务代码,正常情况下,我们在业务代码中是无法感知和使用 Spring 框架的一些方法的。这也带来了一个问题,那就是如果我们真的需要使用 Spring 一些方法,比如获得上下文,比如获得 Bean 容器,这时应该怎么办呢?S原创 2022-07-09 11:09:11 · 345 阅读 · 0 评论 -
Spring注解中的@DependsOn是什么意思
@DependsOn注解可以定义在类和方法上,意思是这个组件要依赖于另一个组件,也就是说被依赖的组件会比该组件先注册到IOC容器中。使用场景:需要用到观察者模式的情况下通常都需要用到该注解,观察者模式有三要素,观察者、事件源、事件,机制是观察者会监听数据源的某些事件,当事件源触发该事件后,观察者就会进行相应措施。结果:对应文件位置:分析:因为spring默认扫描包时会根据文件在文件夹中的位置先后顺序扫描加载,而EventSource 文件位置在EventTListener前面,所以会先加载Eve原创 2022-06-25 14:09:18 · 615 阅读 · 0 评论 -
Springboot实现文件上传下载的简单demo
基于springboot实现文件上传下载demo原创 2022-06-04 10:18:16 · 468 阅读 · 0 评论 -
基于异步调用外部rpc降低rest接口rt思路及实现
文章目录前言架构演进异步化指令举例前言在生产环境开发中,一个rest接口的逻辑大体基本如下:入参校验—》业务逻辑—》入库而随着业务逻辑的不断迭代、满足日益庞杂的业务需求的过程中,系统的RT也越来越长,成为一个不可避免的问题。架构演进其实最初的架构演进是单体应用、也就是从前端到数据库中间只会加一个应用,在这个时候其实一个系统的rt,它是多长就是多长,优化空间比较有限。而随着后期微服务的加入,由于业务系统之间越来越多的相互调用、rt逐步增大。尤其涉及到需要入库的系统,这样的系统本身rt就长。rt原创 2022-05-28 09:38:06 · 282 阅读 · 0 评论 -
别再自己写工具类啦,盘点那些SpringBoot自带的便捷工具类
文章目录断言简介方法对象类ObjectUtilsStringUtilsCollectionUtils文件、资源、IO 流FileCopyUtilsResourceUtilsStreamUtils反射、AOPReflectionUtilsAopUtilsAopContext断言简介断言是一个逻辑判断,用于检查不应该发生的情况Assert 关键字在 JDK1.4 中引入,可通过 JVM 参数-enableassertions开启SpringBoot 中提供了 Assert 断言工具类,通常用于数据合原创 2022-05-10 10:21:13 · 474 阅读 · 0 评论 -
其实你不懂maven(一)
文章目录不使用maven会怎样?要导入很多jar包 烦!烦就算了 还找不到地方下载?!不仅难下,还容易冲突!!??走进maven能不走近吗maven工程结构别说那么多,怎么下载?我先用起来maven官网下载页面解压指定本地仓库配置阿里云镜像仓库配置jdk版本不使用maven会怎样?要导入很多jar包 烦!这一点大家应该都知道,不使用maven的话jar包管理起来会非常费劲。比如下面的例子,我们只用到 SpringBoot、SpringCloud 框架中的三个功能:Nacos 服务注册发现W原创 2022-04-05 10:44:23 · 416 阅读 · 0 评论 -
SpringBoot解决@Qualifie @Autowired共用出现无法注入beans的问题
问题描述:@Qualifie @Autowired注解共用出现错误:找不到beans图示:在 settings-preferences-Inspections-spring 把右边的Mixed 改为warning批注:当然并不是所有的无法注入beans都这样解决有些时候SpringBoot的提示是正确的,确实注入beans失败了,这种时候可能是写法有问题。当确认自己的写法无误,而且自测也没问题,这种时候这种红色的横线提示就很烦了,明明没错却总是报错。此时可以采取上述的解决方式,这种解决原创 2022-03-18 10:55:30 · 686 阅读 · 0 评论 -
EventBus消息总线 使用举例
文章目录代码示例总结拓展与思路先上代码看下如何使用代码示例支付成功事件,在这里模拟一个事件,当该事件发生时,我们就给其他监听器发送消息。public class PaymentSuccessfulEvent { private String action; PaymentSuccessfulEvent(String action) { this.action = action; } String getAction() { retu原创 2022-03-14 14:56:10 · 264 阅读 · 0 评论 -
一个可以自动根据接口匹配实现类的执行器(面条汽车完美版)
文章目录前言代码前言上接《一个可以自动根据接口匹配实现类的执行器(面条版).md》https://blog.csdn.net/GBS20200720/article/details/123077227?spm=1001.2014.3001.5501完美版在此基础上,加入了对于接口的区分。(旧版中,只有一个接口,也即只会根据单个接口自动匹配实现类;而在新版中,加入了一个新的接口,共计两个接口,其实也就是支持根据多个接口自动匹配各自的实现类了)接下来在代码中做详细解释代码注解中加入了一个属性,in原创 2022-02-24 18:38:50 · 300 阅读 · 0 评论 -
一个可以自动根据接口匹配实现类的执行器(面条)
文章目录需求背景给出新的方案源码注解类:手动注入bean的工具上下文:控制器:代表“面的种类”的枚举:实现“匹配不同面”的执行器接口:执行器接口的实现类:面类统一父接口:“水煮面”类:“鸡蛋西红柿面”:“肥牛面”:“肥肠面”:“面条类”工厂:“面条”服务类:主启动类:需求背景举一个场景,比如说此时我们写了一个饭馆类,要根据用户的需求来给他做不同的面。那此时要如何实现呢?常规的写法可能就是把用户输入作为一个变量,然后对此变量做if if if有n种面,就有n个if但这样的写法显然也太low了,而且原创 2022-02-22 20:58:54 · 350 阅读 · 2 评论 -
为什么加了@slf4j注解 就可以直接使用log了呢?
文章目录叙述问题问题来由解答叙述问题这个问题的意思就是,为什么加了@slf4j注解 就可以直接使用log了呢?如果不使用注解,那我们使用log,需要这样定义: static Logger logger = LoggerFactory.getLogger("Update的日志");这样定义还是很好理解的,之所以下面能使用,是因为开头我们声明了logger对象,所以可以用对象调用方法。那为什么加@slf4j,注解可以用logger呢?问题来由其实用@slf4j这个注解也挺久了,但似乎从来原创 2022-02-08 17:16:27 · 4793 阅读 · 9 评论 -
Spring 注解 @bean 和 @component 的区别, 你知道吗?
文章目录1. @Component 和 @Bean 的区别是什么?2. Autowire 和 @Resource 的区别3. 将一个类声明为 Spring 的 bean 的注解有哪些?4. @Configuration :配置类注解5. @ControllerAdvice :处理全局异常利器6. @Component, @Repository, @Service 的区别Spring 中的一些注解1. @Component 和 @Bean 的区别是什么?作用对象不同:@Component 注解作用于类,原创 2022-02-06 12:04:44 · 127 阅读 · 0 评论 -
Spring Boot官宣:正式弃用 Java 8,最低要 Java 17
文章目录技术不断更新,这不springboot又开始了新的发布!2022年1月20日,Spring官方发布了Spring Boot 3.0.0的第一个里程碑版本M1。下面一起来来看看Spring Boot 3.0.0 M1版本都有哪些重大变化:Java基线从 Java 8 提升到了 Java 17这个在最早的Spring Boot 3相关预告中就已经知道了,Java 17将成为未来的主流版本。那么问题来了,大家都把Java 17的升级提上日程了吗?从Java EE APIs 到 Jakarta原创 2022-02-06 12:05:10 · 251 阅读 · 0 评论 -
分布式场景下防重点实现思路(后端)
首先本次请求有一个traceId,也就是请求的唯一标识(原则上永远不会重复)以此traceId或与此traceId相关的字符串作为key,value可任意使用redis塞缓存(redis不是分布式的,所以以非分布式的缓存来解决分布式服务的一致性问题)设置缓存注意两个点:setnx 这是redis设置缓存的指令,当设置成功时返回1,失败返回0。(当前key已存在则为失败,不存在则为成功,这是setnx的特性)设置过期时间 防重点是在很快的点击时,才会“防”,所以过期时间不需要太长,这样也可以减原创 2022-01-27 19:23:50 · 394 阅读 · 0 评论 -
分布式场景下多次请求如何携带数据跳转(后端)
举个简单例子,我们在淘宝购物,他肯定不会只发一个请求给后端吧?从我进入商品的详情页开始,点击购物,再确认付款,这里面可能还有更多步骤,给后端发送的请求很多,但是我们知道http协议是无状态的,也意味着我们每次请求与请求之间是无关的,参数都取决于前端页面传了什么。但显然前端页面不可能每次都把全部数据传给后端,而且更重要的是,后端请求与请求之间,有很多中间态,是后端自己计算或者识别出来的,那有怎么给后续的请求用呢?比如我进入商品详情页,计算出一个值A,而这个值A与前端页面展示完全无关,只是后端自己使用。然原创 2022-01-27 19:23:11 · 168 阅读 · 0 评论 -
SpringBoot 手机商城,接私活项目,已开源,2022 接私活必备
文章目录项目简介技术选型前端使用技术:商城功能项目结构系统预览代码地址:项目简介前后端分离的商城系统, 包含商城、拼团、砍价、商户管理、 秒杀、优惠券、积分、分销、会员、充值、多门店等功能,更适合企业或个人二次开发。技术选型后端使用技术:SpringBoot2,MyBatis-Plus,SpringSecurity,Druid,Slf4j,Fastjson,JWT,Redis,Quartz,Mysql,swagger,WxJava,Lombok,Hutool,Mapstruct,Redisson,R转载 2022-01-17 19:37:23 · 381 阅读 · 0 评论 -
SpringCloud学习笔记<3>
文章目录一、BUS消息总线 erlang rabbitMQ二、Springcloud Stream 消息驱动 分组驱动与持久化三、Springcloud Sleuth分布式请求链路追踪 zipkin四、Springcloud Alibaba Nocos特性一、BUS消息总线 erlang rabbitMQBUS消息总线:也就是做一个微服务来代替我们自己去自动发上面的curl refresh安装erlang以3355位模板整一个3366来查看广播效果:3366contr原创 2021-11-03 20:19:18 · 299 阅读 · 0 评论 -
前后端分离开发跨域问题解决方案
一、什么是跨域跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实施的安全限制。这里说明一下,无法跨域是浏览器对于用户安全的考虑,如果自己写个没有同源策略的浏览器,完全不用考虑跨域问题了。是浏览器的锅,对。同源策略限制了一下行为:Cookie、LocalStorage 和 IndexDB 无法读取DOM 和 JS 对象无法获取Ajax请求发送不出去首先狭义的同源就是指,域名、协议、端口均为相同。下面举个例子:http://www.nealy原创 2021-11-03 15:58:00 · 211 阅读 · 0 评论 -
SpringCloud学习笔记<2>
文章目录一、hystrix二、Jmeter三、服务监控hystrixDashboard四、gateway网关五、SpringCloud Config 配置中心一、hystrixHystrix :服务降级服务熔断服务限流二、Jmeter下载Jmeter压力测试工具(我是最新版5.3 对应jdk1.8及以上)自测通过后添加cloud-consumer端 ,消费者80去调用8001此时8001压力较大时、多个80消费者去调用、延迟更明显服务降级显得更有必要。此处写一下8原创 2021-11-03 17:27:52 · 117 阅读 · 0 评论 -
SpringCloud学习笔记<1>
文章目录一、入门1.maven下载jar包太慢?2.如何在官网下载旧版本的maven?3.父工程pom、yml?4.@data @AllArgsconstructor @NoArgsconstructor 注解失效解决方法5.配置数据源?6.Mybatis中javaType和jdbcType对应关系7.加时区?8.开启热部署?9.开启run dashboard?10.工程重构?11.RestTemplate?二、Eureka入驻1.入驻Eureka步骤2.Eureka服务器集群配置3.IP地址的显示和主机原创 2021-11-03 17:05:29 · 1040 阅读 · 0 评论 -
SpringBoot如何开启热部署(idea)
使用idea开发必备的概念:热部署就是正在运行状态的应用,修改了他的源码之后,在不重新启动的情况下能够自动把增量内容编译并部署到服务器上,使得修改立即生效。热部署为了解决的问题有两个, 一是在开发的时候,修改代码后不需要重启应用就能看到效果,大大提升开发效率;二是生产上运行的程序,可以在不停止运行的情况下进行升级,不影响用户使用。热部署的pom: <dependency> <groupId>org.springframework.boot</g原创 2021-11-06 09:13:17 · 211 阅读 · 0 评论 -
SpringBoot实现邮箱发送验证码
文章目录一、邮件协议二、邮件收发过程三、开发过程一、邮件协议1)smTP协议-发送邮件smTP是一个相对简单的基于文本的协议。在其之上指定了一条消息的一个或多个接收者(在大多数情况下被确认是存在的),然后消息文本会被传输。STMP服务器则是遵循STMP协议的发送邮件服务器,用来发送或中转发送的电子邮件。默认端口号为25。2)POP3协议-接收邮件POP3,全名为“Post Office Protocol - Version 3”,即“邮局协议”。是TCP/IP协议族中的一员。本协议主要用于支持使原创 2021-11-05 19:19:24 · 341 阅读 · 0 评论 -
SpringCloud学习笔记<4>
文章目录一、Nacos作为配置中心二、sentinel一、Nacos作为配置中心分类配置:Data-ID方案:group分组方案:Namespace方案:我粘贴的是test的命名空间流水号,也就意味着我此时读到的是test命名空间下的配置文件且是default分组然后我文件名图省事都是dev结尾的总结:nacos分组配置有三个层次:由上至下分别是: 1.name sapce命名空间 2.group分组 3.data id所以当定义一个文件时,先确定命名空原创 2021-11-05 18:55:04 · 75 阅读 · 0 评论 -
SpringBoot调用支付宝开发者平台支付接口
文章目录环境准备现在所有的环境都是使用支付宝开发者平台提供的沙箱环境1.访问https://openhome.alipay.com/platform/appDaily.htm?tab=info 手机扫描登录填写资料2.配置支付密匙详细信息显示如下:2.1 首先点击 RSA2(SHA256)密钥 设置2.2 点击公钥2.3 根据你的电脑系统下载对应的生成器复制应用公钥保存设置这样会生成支付宝公钥此时我们就可以进行支付宝正式开发了。springBoot 配置3.1 pom原创 2021-11-06 09:16:47 · 1532 阅读 · 0 评论 -
分布式电商项目 谷粒商城 学习笔记<1>
文章目录一、基础概念1.电商模式2.分布式&集群3.挂载二、系统架构简介及开发工具1.架构图2.虚拟机安装docker安装mysql安装redis3.开发工具三、开发1.数据库初始化2.人人开源搭建后台管理系统3.人人开源逆向工程搭建4.公共服务common5.mybatis-plus6.gateway网关四、前端之ES1.let与var2.解构表达式3.函数优化4.map reduce5.promise封装ajax 优化异步操作6.模块化import/export五、前端之vue1.dom对象原创 2021-11-07 10:58:47 · 849 阅读 · 0 评论 -
分布式电商项目 谷粒商城 学习笔记<2>
文章目录六、三级分类1.按照父子类的结构获取所有分类2.跨域问题的解决1、使用nginx部署为同一域2、让服务器告诉预检请求能跨域3.过滤器优先级问题4.删除5.增加修改拖拽七、品牌管理1.阿里云上传2.代码上传品牌图片3.JSR303校验@Valid内置异常统一异常处理八、商品SPU和SKU管理1.概念2.三级分类表和属性表3.分页插件4.模糊查询5.冗余字段保持一致6.PO VO DTO POJO九、规格参数新增与VO1.新建VO2.查询涉及到多个表3.采购十、ES1.基本概念2.安装3.配置4.基本原创 2021-11-07 11:03:52 · 1126 阅读 · 0 评论 -
springboot整合mybatis无法绑定entities的解决方法
出现这个问题的原因有好几个,所以我们逐步的来解释并解决问题;1、首先,要明确一点的是,Dao层的抽象方法中的参数一般情况下默认的是一个参数或者一个对象;例如:public interface StudentDao {int selectById(int id);int insert(Student stu);}这两种是正常的方式,不会出现什么问题,mappper中的对应取值都是用#{}这种方式;例如:<insert id="insert" parameterType="com原创 2021-11-05 19:15:09 · 246 阅读 · 0 评论 -
SpringBoot整合redis使用指南
文章目录一、下载redis及redis可视化工具RedisDesktopManager二、引入依赖POM YML三、建立redis配置类四、在controller中的使用五、关于可视化工具RedisDesktopManager一、下载redis及redis可视化工具RedisDesktopManager redis的话下载解压版就行了、可视化工具直接百度就可,是免费的。这里贴一个redis的下载地址:https://github.com/MicrosoftArchive/redis/r原创 2021-11-05 19:08:29 · 266 阅读 · 0 评论 -
SpringCloud学习笔记<5>
文章目录一、sentinel关联流控规则预热warm up排队等待降级规则热点key限流sentinel系统规则sentinel resource 配置自定义限流处理逻辑使用@SentinelResource同时处理java异常和sentinel配置异常一、sentinel前面已经记过了直接的流控规则这里继续测试关联流控规则预热warm up排队等待降级规则sentinel的断路器是没有半开状态的,区别hystrix要注意不论是哪种降级规则,判断是否需要降级的入门条原创 2021-11-05 19:03:54 · 125 阅读 · 0 评论 -
SpringBoot开启定时任务
静态定时任务(基于注解)基于注解来创建定时任务非常简单,只需几行代码便可完成。@Scheduled 除了支持灵活的参数表达式cron之外,还支持简单的延时操作,例如 fixedDelay ,fixedRate 填写相应的毫秒数即可。@Configuration //1.主要用于标记配置类,兼备Component的效果。@EnableScheduling // 2.开启定时任务public class SimpleScheduleConfig { //3.添加定时任务 @Schedu原创 2021-11-06 09:18:14 · 219 阅读 · 0 评论 -
分布式电商项目 谷粒商城 学习笔记<3>
文章目录十、ES7.进阶--聚合聚合子聚合8.Mapping字段映射创建索引并指定映射不能更新映射9.分词安装ik分词器补充:linux命令行编辑自定义词库10.elasticsearch-Rest-Client导入依赖不需要数据源的微服务 依赖的父工程中有数据源相关配置处理配置类测试类保存/修改检索及聚合十一、安装nginx十二、product-es准备1.确定索引模型2.nested嵌入式对象十三、商品上架1.基本思路2.批量查询sku是否有库存3.给一个skuEsModels 批量上传ES4.根据sp原创 2021-11-07 11:04:37 · 2364 阅读 · 0 评论 -
分布式电商项目 谷粒商城 学习笔记<5>
8.SpringCachehttps://blog.csdn.net/hancoder/article/details/114004280十七、集群篇-k8s1.简介kubernetes简称k8s。是用于自动部署,扩展和管理容器化应用程序的开源系统。中文官网:https://kubernetes.io/Zh/中文社区:https://www.kubernetes.org.cn/官方文档:https://kubernetes.io/zh/docs/home/社区文档:https://docs.原创 2021-11-07 11:06:57 · 345 阅读 · 0 评论 -
分布式电商项目 谷粒商城 学习笔记<4>
文章目录十五、压力测试1.一些基本概念2.JVM内存机制3.压测记录4.Nginx动静分离5.优化三级分类查询十六、redisson分布式锁与缓存1.概念2.redis3.缓存失效缓存穿透缓存雪崩缓存击穿互斥锁:4.缓存击穿如何复制微服务:5.分布式缓存概念原则基本流程6.Redisson环境搭建可重入锁锁的续期读写锁信号量(Semaphore)闭锁7.缓存和数据库一致性十五、压力测试这里是使用jmeter作为压力测试工具。1.一些基本概念TPS 每秒处理的交易数QPS 每秒处理的请求数原创 2021-11-07 11:05:33 · 443 阅读 · 0 评论 -
@Configuration(proxyBeanMethods = false) 和(proxyBeanMethods = true)详解
proxyBeanMethods = false 代表关闭代理proxyBeanMethods = true 代表开启cglib代理proxyBeanMethods = true 或不写,是Full模式proxyBeanMethods = false 是lite模式不带@Configuration的类叫Lite配置类先看注解源码:@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Compon原创 2022-01-13 16:08:58 · 935 阅读 · 0 评论 -
SpringBoot原理深入点滴 SpringBoot注解详解 (持续更新中)
springboot原理学习servlet编程 reactor响应式编程springboot内嵌web服务器undertow,完全采用java语言开发,支持阻塞和非阻塞io对于高并发系统,undertow的性能表现更优不需要tomcat简化配置、简化部署(打jar,打war 只需要maven clean package即可)微服务 去中心化 一个大应用拆成很多小服务 各自单独运行微服务的困难:远程调用、服务发现、负载均衡、服务容错、配置管理、服务监控、链路追踪、日志管理、任务调度云原创 2022-01-15 12:04:16 · 875 阅读 · 0 评论