
Spring
文章平均质量分 93
恐龙弟旺仔
保持热爱,保持进步
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Sentinel嵌入式集群模式搭建(Nacos)
1.环境准备 1)代码准备 笔者目前是基于Sentinel-release-1.7的源码进行测试的,在原sentinel-demo-cluster的基础上,适配笔者本地的环境进行修改的。源码地址如下:https://github.com/alibaba/Sentinel/tree/release-1.7 2)Nacos环境准备 由于S...原创 2020-01-11 12:14:19 · 7284 阅读 · 7 评论 -
线程之UncaughtExceptionHandler的应用
前言: 看源码好处多多,尤其是优秀的框架源码,受益无穷。 日常CRUD的工作实在无聊,把CRUD的代码写一万遍也没法提高个人的层级。 业务的疯狂增长确实能增长个人的技能,因为需要不断思考优化方案,不断去升级(硬件、软件和个人能力)。 但是要想写出好的代码,好的框架还是需要多借鉴别人的优秀代码。 笔者个人的感受就是:明明看了很多遍的设计模式,但是平时...原创 2020-03-01 09:58:51 · 854 阅读 · 0 评论 -
分布式调度框架elasticJob对Curator的使用解析
前言: 由于公司使用到elasticJob作为分布式调度框架的基础,所以也多多少少研究了一下这个框架。 任务调度的框架有很多,单机情况下我们可以用Quartz,但是分布式调度的情况下,Quartz就无能为力了,这个时候分布式调度就上线了。 当然这篇博客不是用来介绍elasticjob的使用,而是介绍elasticjob对zookeeper的使用。 正好也与上...原创 2020-02-22 22:12:27 · 846 阅读 · 0 评论 -
Curator的简单封装使用
前言: 闲来无事,想起把zookeeper的相关知识再补充一下。作为中间件部门的成员,与zookeeper打交道的机会还是很多的。目前市面上的很多产品,尤其是分布式相关的,基本都会用上zookeeper。 本文不是一篇介绍zookeeper是什么和怎么使用的文章,而是介绍zookeeper的使用框架Curator的。本来笔者还想着把Curator的使用再好好熟悉下,因为一段时间...原创 2020-02-22 12:00:17 · 537 阅读 · 0 评论 -
Sentinel源码-线程池的使用
前言: 有好长一段时间没有写博客了,思来想去,懒是主要的原因,另外一方面笔者在年初换了工作,适应工作还是花了蛮长一段时间的,还有就是,没找到一个合适的主题、系列来写。 之前写的很多对个人的成长还是比较有益的,起码现在在看源码的时候不像前两年那么吃力了,写的代码也会刻意去模仿源码的风格来做。 现在找到一个合适的主题,就是Sentinel,因为公司未来要引入这项技术,所以...原创 2019-12-12 19:43:22 · 688 阅读 · 0 评论 -
Sentinel源码-多线程并发N种同步方式
前言: 上文讲了Sentinel在线程池使用方面的经验。 既然有了多线程任务执行,那么就会存在并发问题,当出现并发问题时,解决方案无外乎加锁。 Sentinel中也有很多解决并发问题的方案,跟着笔者来看看吧。1.synchronized使用 这是比较常用的一种同步方式,我们来看下Sentinel对其的使用// ZookeeperDataSou...原创 2019-12-20 16:46:02 · 679 阅读 · 0 评论 -
Spring自定义加载配置文件(分层次加载)
前言: Spring会默认加载application.properties文件,我们一般可以将配置写在此处。这基本可以满足我们的常用demo项目使用。 但是在实际项目开发中,我们会将配置文件外置,这样在我们需要修改配置的时候就不用将项目重新打包部署了。 下面我们来看一下实际项目开发的需求。针对配置分层次加载的需求: 举给例子: 1.我们希...原创 2020-03-07 13:23:18 · 1751 阅读 · 0 评论 -
SpringBoot_Cache自定义使用SimpleCacheManager
前言: 在SpringBoot_Cache中,会默认使用SimpleCacheManager。 但是笔者遇到一个问题,就是当前项目中也引用了redis的maven依赖,导致Cache使用了JedisManager,笔者还是想使用默认的SimpleCacheManager 这个时候就需要我们手动生成SimpleCacheManager的bean,则Cache会强制使用该...原创 2018-08-16 17:55:06 · 10513 阅读 · 1 评论 -
SpringBoot之@ConfigurationProperties自动注入成员变量值功能源码解析
前言: 我们在使用SpringBoot开发相关项目时,经常会使用到@ConfigurationProperties注解,这个注解配合application.properties(或yml文件)使用,可以快速的为我们的Bean的成员变量进行赋值,常规用法如下:// 创建bean@ConfigurationProperties(prefix="person")@Datapubli...原创 2018-07-25 15:53:23 · 12964 阅读 · 1 评论 -
spring-kafka源码解析
前言: 关于Kafka,是一个比较流行的MQ工具,也是多数公司比较常用的。有关于Kafka的一些基本内容读者可以参考官方文档,了解一下生产者消费者的使用。kafka的搭建笔者也不再详述,网络上有很多文章介绍。 这篇文章主要是从源码的角度来分析一下Spring对kafka的使用封装 笔者搭建的kafka版本为 kafka_2.11-0.11.0.11....原创 2018-12-10 14:19:30 · 8209 阅读 · 2 评论 -
Spring官方文档学习:开篇
前言: 入行也算有几年了,Spring也是一直都在用,源码也看了一些,相关博客也写了一些,但是总觉得还是对Spring的理解不够深入。仔细想来,应该是Spring的使用还不够深入,所以导致理解也不够深入。 痛定思痛,决心把Spring从头到尾好好的学一遍,用示例的方式一个个知识点敲过来。 顺便把这些整理成博客,一方面是监督自己,另一方面也希望对在学习使用Spring的...原创 2019-05-02 10:54:11 · 1606 阅读 · 2 评论 -
Spring定义Bean的两种方式:<bean>和@Bean
前言: Spring中最重要的概念IOC和AOP,实际围绕的就是Bean的生成与使用。 什么叫做Bean呢?我们可以理解成对象,每一个你想交给Spring去托管的对象都可以称之为Bean。 今天通过Spring官方文档来了解下,如何生成bean,如何使用呢?1.通过XML的方式来生成一个bean 最简单也是最原始的一种方式,通过XML来定义一个be...原创 2019-05-02 14:28:39 · 24968 阅读 · 2 评论 -
Spring如何引入其他资源:<import>和@Import @ImportResource
前言: 作为一个中型的基于Spring的项目时,我们经常会分模块开发,那么bean定义文件我们如何分配和管理呢?是都放在一个配置文件中嘛? 我们在老项目二次开发的时候,经常会遇到需要使用之前的beans配置文件,集成到当前项目配置中,遇到这种情况如何操作呢?1.合理使用<import>标签 场景:我们目前的项目里已经有beans.xml配...原创 2019-05-03 18:17:23 · 10101 阅读 · 1 评论 -
Spring控制Bean生命周期行为的几种方式
前言: Spring中的Bean从创建到销毁经历了一个又一个阶段,在这些阶段中,我们可以通过某些方法来控制Bean的创建、Bean的销毁。 在Spring的官方文档中,有这么一段话As of Spring 2.5, you have three options for controlling bean lifecycle behavior: the Initializin...原创 2019-05-03 18:25:06 · 1133 阅读 · 0 评论 -
Spring容器生命周期管理:SmartLifecycle
前言: 笔者之前在项目中倒也没有关注过Spring容器的生命周期管理(大家注意下:之前一篇博客介绍的是Spring中Bean的生命周期管理,与目前要介绍的Spring容器的生命周期管理倒还是千差万别的,千万不要混淆了)。 Spring容器,我们常用的就是ApplicationContext,容器本身是存放Bean和Bean之间的依赖关系的,那么容器的生命周期是什么概念呢?...原创 2019-05-04 15:51:48 · 1919 阅读 · 0 评论 -
Spring优雅关闭之:ShutDownHook
前言: 又是一个之前没关注过的课题,发现学习Spring官方文档还是有用的,一个个的知识点不断冒出来。 意外的发现朱小厮https://blog.youkuaiyun.com/u013256816/大神也是优快云重度患者,哈哈,向大神学习,好好写博客,应该有一天也可以出书的吧。 闲话不多说了,先提出一个问题,什么叫做优雅关闭? 我们的java程序运行在JVM上...原创 2019-05-04 15:59:17 · 33960 阅读 · 2 评论 -
定制化Bean的利器:BeanPostProcessor、BeanFactoryPostProcessor
前言: Spring的面试中,一般都会问到IOC和AOP,大部分同学都能回答出这些知识点的基本运用,如果再多问一句,AOP的底层实现方式,大部分人都会回答动态代理。那么动态代理是如何被使用到Bean上的呢?到这里可能要刷掉一大部分人,如果没有看过Spring的源码的话,这个是比较难回答的。 实际就是今天要了解的BeanPostProcessor,这是一个比较神奇的接口,实现AO...原创 2019-05-12 09:16:21 · 644 阅读 · 1 评论 -
FactoryBean和BeanFactory
前言: 这是一个很容易被问到的关于Spring的面试题。 两个特别像,但是功能却千差万别。 有关于BeanFactory,我们都知道,这是Spring容器的基础实现类,它负责生产和管理Bean的一个工厂。当然BeanFactory只是一个接口,它的常用实现有XmlBeanFactory、DefaultListableBeanFactory、ApplicationCon...原创 2019-05-12 10:16:35 · 2728 阅读 · 0 评论 -
@Autowired使用全纪录
前言: @Autowired应该是我们在Spring项目中最常用的注解了。 使用起来非常方便,但是一旦出现问题调试起来也是比较麻烦的。 笔者就是这样,平时用来一时爽,出现问题两行泪。 究其原因,还是对@Autowired了解得不够深入,下决心好好玩一次1.@Autowired介绍 先来看下其定义,如下:@Target({Elemen...原创 2019-05-12 14:26:36 · 5255 阅读 · 0 评论 -
@Resource那点事
前言: 在项目开发中,@Autowired和@Resource之争,一直搞不清楚,反正也不想搞清楚到底什么时候用@Autowired,什么场景下用@Resource,就一直用@Autowired得了。 现在又到了还账的时候了,必须写一篇文章搞懂@Resource那点事 上一篇文章写了@Autowired的使用方式,有兴趣的读者可以找来看下,后面我们会对这两种作对比。...原创 2019-05-12 15:40:39 · 1676 阅读 · 0 评论 -
ApplicationEvent与ApplicationListener
前言: Spring的世界中有这么一对好基友,两个人总是同时出现,相爱相杀。这就是ApplicationEvent与ApplicationListener。感觉有点像小偷和警察,只要ApplicationEvent一出现,ApplicationListener就会发现TA。 下面我们就来看一个示例,是Spring官方文档提供的示例。 笔者大概说明一下这个示例的背景:就...原创 2019-07-06 11:09:47 · 2270 阅读 · 0 评论 -
Eureka源码深度解析(下)
答上期问题: 接着上篇文章 Eureka源码深度解析(上) 来看,上篇文章,我们留下了一个问题,就是这些服务注册、续约的方法是什么时候被调用的呢? 我们还是来看下com.netflix.discovery.DiscoveryClient这个类,这个类在应用启动的时候被加载到容器中,肯定会调用其构造方法,构造方法如下: @Inject DiscoveryCli...原创 2018-07-27 14:45:35 · 2089 阅读 · 2 评论 -
SpringBoot_Cache源码解析
前言: 在上文中,笔者介绍了有关于SpringCache的使用及源码解析 读者可先了解下这篇文章 https://blog.youkuaiyun.com/qq_26323323/article/details/81746265 了解下其源码分析过程,这样有助于本文的源码分析 实际在现在的很多项目中,SpringBoot+ 已经成为一种主流了,SpringBoot...原创 2018-08-17 11:16:46 · 1781 阅读 · 0 评论 -
Spring事务传播机制详解
前言: Spring的事务,也就是数据库的事务操作,符合ACID标准,也具有标准的事务隔离级别。 但是Spring事务有自己的特点,也就是事务传播机制。 所谓事务传播机制,也就是在事务在多个方法的调用中是如何传递的,是重新创建事务还是使用父方法的事务?父方法的回滚对子方法的事务是否有影响?这些都是可以通过事务传播机制来决定的。 本文就测试一下这些事务传播机制...原创 2018-08-21 15:55:28 · 66998 阅读 · 22 评论 -
SpringCache源码深度解析
前言: 缓存是我们常用的一种优化系统的方案。 无论是前端缓存还是应用层缓存或者数据库缓存,其本质都是将查询过的数据缓存下来,下次再次查询该数据的时候如果数据没有过期,则直接返回缓存中该数据即可,不再执行查询操作。 SpringCache是我们常用的一种应用层缓存方案,其一般应用在方法上,下面我们先来看下具体的使用方式,然后再从源码角度分析其实现方案 读者需要...原创 2018-08-15 11:17:45 · 11289 阅读 · 4 评论 -
Spring源码深度解析(AOP功能源码解析)
前言: 有关于Spring,我们最常用的两个功能就是IOC和AOP,前几篇文章从源码级别介绍了Spring容器如何为我们生成bean及bean之间的依赖关系 下面我们接着来看AOP的源码实现。 有关于AOP,我们在面试中也被无数次问到,AOP是什么?AOP有什么作用与优势?AOP在项目中是如何用到的? 这些还都是比较简单的,有些可能会问你AOP的实现是...原创 2018-07-12 11:28:14 · 33464 阅读 · 19 评论 -
SpringMVC源码解析(下)
前言: 我们接着上一篇文章 SpringMVC源码解析(上) 来继续分析,下面来看DispatcherServlet的源码详细解析 init()方法用来初始化资源; doGet()/doPost()等方法用来接收并处理请求; 下面就按照这两块来分析DispatcherServlet源码 1.DispatcherServlet.init(默认实现在Ht...原创 2018-07-19 10:50:49 · 1202 阅读 · 1 评论 -
Feign使用及源码深度解析(下)
前言: 在上一篇文章中,我们对@EnableFeignClients注解的源码进行了分析,了解到其主要作用就是把带有@FeignClient注解的类或接口用FeignClientFactoryBean类注册到Spring中。 本文中,便开始介绍FeignClientFactoryBean是如何实现Ribbon+Hystrix的功能的 1.FeignClientFacto...原创 2018-09-04 10:20:08 · 2820 阅读 · 1 评论 -
Feign使用及源码深度解析(上)
前言: SpringCloud Feign基于Netflix Feign实现,整合SpringCloud Ribbon和SpringCloud Hystrix 我们在使用微服务框架的时候,一般都会在项目中同时使用Ribbon和Hystrix,所以可以考虑直接使用Feign来整合 1.Feign的使用 关于准备工作(Eureka双注册中心,服务提供者),这...原创 2018-09-04 10:05:48 · 2620 阅读 · 4 评论 -
Ribbon源码深度解析
前言: Ribbon作为客户端负载均衡的一种手段,被广泛应用在微服务项目中。 有关于Ribbon的介绍和使用方式,读者可参考笔者的另一篇文章 https://blog.youkuaiyun.com/qq_26323323/article/details/78668776 本文主要介绍基于@LoadBalanced的RestTemplate来实现的负载均衡的源码解析 1...原创 2018-08-01 11:30:39 · 3802 阅读 · 0 评论 -
Eureka源码深度解析(上)
前言: Eureka作为一个服务注册中心,主要功能就是服务注册与服务发现。 微服务框架中,服务注册与发现既是基础功能也是核心功能。 Eureka分为服务端和客户端。 服务端也称为服务注册中心,它同其他服务注册中心一样,支持高可用配置。在项目中使用@EnableEurekaServer实现即可 客户端主要处理服务的注册与发现,每一个服务提供者和...原创 2018-07-26 15:44:15 · 1862 阅读 · 2 评论 -
Eureka单节点及高可用(详细配置)
一:构建单节点Eureka服务注册中心1.创建Eureka server 1)创建part-1-eureka项目,修改pom.xml文件<parent> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-parent&...原创 2017-11-28 11:12:29 · 2811 阅读 · 0 评论 -
Ribbon负载均衡的使用方式与配置方式详解
1.负载均衡 负载均衡是对系统的高可用、网络压力的缓解和处理能力扩容的重要手段之一。 2.服务器端负载均衡和客户端负载均衡 1)服务器端负载均衡 我们通常所说的负载均衡都是指服务器端的负载均衡,其分为硬件和软件负载均衡方式。 * 硬件负载均衡:通过在服务器节点之间专门安装用于负载均衡的设备,比如F5等。 * 软...原创 2017-11-29 19:06:30 · 4700 阅读 · 0 评论 -
Hystrix服务容错保护使用明细
1.微服务服务依赖的风险 在微服务架构中,系统被拆成了很多单元,各单元的应用间通过服务注册与订阅的方式互相依赖。依赖通过远程调用的方式来执行。 有可能因为网络原因或者依赖服务自身问题出现调用故障或延迟,而这些问题也会导致调用方的对外服务也出现延迟,此时若调用方的请求不断增加,最后会导致自身服务的瘫痪2.断路器模式原创 2017-11-30 19:01:05 · 790 阅读 · 0 评论 -
Spring源码深度解析(XmlBeanFactory源码解析上)
前言: Spring容器有多种实现方式,一般来说可分为:BeanFactory和ApplicationContext * BeanFactory提供了容器的基本功能,如getBean()等功能 * ApplicationContext接口继承了BeanFactory,不但实现了BeanFactory的所有功能,还对其进行了扩展。 扩展功能如下:1)Messa...原创 2018-07-09 13:55:10 · 2157 阅读 · 6 评论 -
SpringTransaction源码解析(下)
前言: 通过上一篇博客 https://blog.youkuaiyun.com/qq_26323323/article/details/81948682 的分析, 我们从大的结构上分析了Spring事务的实现方式。 主要从通过Spring代理生成代理类,然后通过执行TransactionInterceptor.invoke()方法,来完成Spring事务控制。 本文主要来分析Tr...原创 2018-08-24 14:02:18 · 2306 阅读 · 2 评论 -
Spring注入Bean的几种方式 @Import,ImportSelector,ImportBeanDefinitionRegistrar的详解
转载至: https://my.oschina.net/u/3058881/blog/1673957#comments给容器中注册组件; 1,包扫描+组件标注注解(@Controller/@Service/@Repository/@Component)[自己写的类] 2,@Bean[导入的第三方包里面的组件] 3,@Import[快速给容器中导入一个组件] ...转载 2018-07-25 14:07:25 · 5450 阅读 · 4 评论 -
SpringMVC源码解析(上)
前言: 做过web开发的小伙伴都应该使用过SpringMVC(或者Struts1/Struts2)等框架来处理前端请求,并响应对应的页面; 也有些特别老的项目,直接使用Servlet来处理web请求。 当然,无论使用哪种技术来处理Web请求,底层都是Servlet Servlet应用发布在Web容器(如Tomcat)中,Web容器对请求参数进行封装,对...原创 2018-07-18 14:21:55 · 2825 阅读 · 1 评论 -
Spring源码深度解析(XmlBeanFactory源码解析下)
前言: 上文Spring源码深度解析(XmlBeanFactory源码解析上)介绍了XMLBeanFactory加载beans.xml的全过程 简单总结一下就是: 读取beans.xml为输入流; DOM解析xml文件为Document; Spring解析Document的Element为BeanDefinitionHold...原创 2018-07-10 13:48:41 · 583 阅读 · 0 评论 -
CommandLineRunner与ApplicationRunner的使用及源码解析
前言: 我们在使用SpringBoot搭建项目的时候,如果希望在项目启动完成之前,能够初始化一些操作,针对这种需求,可以考虑实现如下两个接口(任一个都可以)org.springframework.boot.CommandLineRunnerorg.springframework.boot.ApplicationRunner1.CommandLineRunner接口的使用...原创 2018-06-29 15:05:02 · 9292 阅读 · 0 评论