
Spring框架
文章平均质量分 87
Spring框架
祖母绿宝石
程序员
展开
-
Spring AOP的需求引入与特定情况下的失效
文章目录一、前言二、介绍一下AOP(面试语言组织)三、举例:AOP封装日志打印功能四、同一个类中method1()调用method2()五、AOP为何失效六、如何避免AOP失效七、Spring AOP失效模拟 + 源码解析7.1 Spring AOP失效模拟7.1.1 第一种模拟方式7.1.2 第二种模拟方式7.2 Spring AOP源码解析八、Demo2:AOP失效九、面试金手指()9.1 介绍一下AOP是什么?9.2 AOP失效原理+解决方法9.2.1 AOP失效原理 + 两种AOP都是AOP失效9.原创 2020-08-29 11:06:43 · 1011 阅读 · 0 评论 -
看顶级渣男如何邀约100个女朋友(一)
文章目录一、前言二、Spring Cloud Netflix Ribbon2.1 Ribbon的引入三、RestTemplate四、Ribbon负载均衡五、Ribbon源码解析一、前言Spring Cloud分为两个部分,分别是Spring Cloud Netflix和Spring Cloud Alibaba,分别包括下列内容:Spring Cloud Netflix: Ribbon、Hystrix、Feign、Eureka等;Spring Cloud Alibaba:dubbo、nacos注册中心原创 2021-01-10 09:27:25 · 941 阅读 · 2 评论 -
Spring框架精华汇总
文章目录Spring源码解析001 原理层面:Spring启动初始化Spring源码解析002 原理层面:ApplicationContext接口实现类的优美设计Spring源码解析003 原理层面:自定义ApplicationContext接口实现类Spring源码解析004 原理层面:自定义环境变量验证Spring源码解析005 原理层面:Aware接口Spring源码解析006 原理层面:Spring事件发布与接收Spring源码解析007 原理层面:SmartLifeCycle接口S原创 2020-08-25 21:25:46 · 487 阅读 · 0 评论 -
循环依赖有妙招,三级缓存来助力
文章目录一、前言二、什么是循环依赖?三、Spring Bean的循环依赖3.1 Spring Bean循环依赖的产生(单例模式的下的循环依赖,不用记,记住3.2三种循环依赖的构建就好)3.2 Spring中对三种循环依赖的处理3.2.1 循环依赖:构造函数3.2.2 循环依赖:单例模式下属性注入(金手指:只是默认注入方式)3.2.3 循环依赖:原型模式下的属性依赖四、Spring解决循环依赖的原理分析4.1 Spring创建Bean的流程4.2 Spring容器的“三级缓存”4.3 源码解析4.4 流程总结原创 2020-08-05 15:05:54 · 461 阅读 · 0 评论 -
淘金,到Spring中淘设计模式
文章目录一、前言二、控制反转(IOC)和依赖注入(DI)三、工厂设计模式四、单例设计模式五、代理设计模式六、模板方法七、观察者模式(从观察者模式到事件广播/发布与接收)八、适配器模式九、装饰者模式十、策略设计模式十一、面试金手指(11个 IOC 3个+AOP 2个 +事件 1个+ 2个 +3个)十二、小结一、前言Design Patterns(设计模式) 表示面向对象软件开发中最好的计算机编程实践。 Spring 框架中广泛使用了不同类型的设计模式,下面我们来看看到底有哪些设计模式?二、控制反转(IO原创 2020-08-28 22:28:27 · 575 阅读 · 0 评论 -
鬼吹灯,掘金Spring容器中的Aware接口
文章目录一、前言二、spring源码分析Aware子类的使用场景三、BeanNameAware接口的调用场景四、实战,通过Aware接口得到想要的对象五、小结一、前言Aware.java是个没有定义任何方法的接口,拥有众多子接口,在spring源码中有多处都在使用这些子接口完成各种场景下的回调操作,当业务有需要时,我们只需创建类来实现相关接口,再声明为bean,就可以被spring容器主动回调;二、spring源码分析Aware子类的使用场景接下来通过分析spring源码,我们来看看典型的Aware原创 2020-07-29 22:10:21 · 640 阅读 · 0 评论 -
进化,从Spring到SpringBoot
Spring本身配置的重量化Spring web项目的配置太多微服务的萌芽阶段,需要一个轻量级框架springmvc项目springboot 在约定优于配置理念下,是 springframework 的脚手架,快速高效的构建应用。上半节课 Spring Springboot 搭建两个工程下半节课...原创 2020-06-25 17:04:56 · 3412 阅读 · 1 评论 -
ApplicationContext从模拟到实际
文章目录一、前言二、模拟的Spring容器,模拟ApplicationContext2.1 扫描bean2.2 属性注入三、模拟的Spring容器,实际的ApplicationContext3.1 Spring容器:BeanFactory接口(简单了解,重点是ApplicationContext接口)3.2 Spring容器:ApplicationContext接口的整体结构3.2.1 ApplicationContext接口横向结构3.2.2 ApplicationContext接口纵向继承体系3.3 S原创 2020-07-24 21:12:24 · 849 阅读 · 0 评论 -
OpenFeign,声明式的伪RPC调用(一)
文章目录一、前言二、OpenFeign实现声明式的伪RPC调用三、OpenFeign源码解析3.1 OpenFeign源码需要做哪些事情3.2 从@EnableFeignClients开始四、尾声一、前言二、OpenFeign实现声明式的伪RPC调用新建两个工程,spring-cloud-order-service作为服务提供方,spring-cloud-user-service作为服务使用方。现在我们要在spring-cloud-user-service中来访问这个,直接用httpurlcon原创 2021-02-16 13:51:25 · 1065 阅读 · 0 评论 -
生命周期,探秘Spring容器的SmartLifecycle接口
我们实现SmartLifeCycle接口并在这个类上加上@Component注解如何执行实现了SmartLifeCycle接口Spring实际执行关闭原创 2020-07-29 00:04:17 · 1961 阅读 · 0 评论 -
无所遁形,全局异常捕获
文章目录一、前言二、Spring全局异常编写2.1 定义异常处理类,实现HandlerExceptionResolver接口2.2 使用注解或xml配置的方式,将这个异常处理类注入到spring ioc容器2.3 实际业务逻辑中三、SpringMVC全局异常编写3.1 定义服务器错误WEB.XML整合Spring MVC3.2 Spring全局异常,Controller增强方式( Advising Controllers)3.3 Spring全局异常,配置方式3.4 Sping全局异常,自定义异常类和异常解原创 2020-08-29 14:53:43 · 2375 阅读 · 0 评论 -
SpringBoot第三特性:Actuator监控
文章目录一、前言二、Endpoints2.1 health健康信息2.2 Actuator各种各样的endpoint2.3 从属性到操作,开启shutdown操作2.4 连接redis2.5 dubbo三、Metrics 检测系统当前运行指标四、Loggers4.1 查看日志级别4.2 修改日志级别附:info五、自定义actuctor端点5.1 @Endpoint方式(和上面的dubbo那个一样)5.2 继承AbstractHealthIndicator类方式(和redis一样)六、Actuator两种原创 2020-07-11 19:48:09 · 2435 阅读 · 0 评论 -
从Spring生命周期出发...
文章目录一、前言二、Spring生命周期三、Spring所有扩展点一、前言二、Spring生命周期1、开始初始化容器2、加载BeanFactoryPostProcessor实现类3、执行BeanFactoryPostProcessor的postProcessBeanFactory方法4、加载BeanPostProcessor实现类5、实例化业务bean6、Aware接口族调用7、执行BeanPostProcessor实现类的postProcessBeforeInitialization方法原创 2020-08-29 21:29:01 · 585 阅读 · 0 评论 -
从源头出发,Spring启动初始化
文章目录一、前言二、Spring启动初始化三、super(parent)一、前言金手指1:beanFactoryPostProcessor beanFactory的后置处理器,源码命名优美 beanPostProcessorbean的后置处理器,源码命名优美金手指2:refresh()方法在构造函数中调用金手指3:AbstractApplicationContext类所有方法,太多了,截图截不来了,用思维导图两个,一个是AbstractApplicationContext类所有原创 2020-07-27 19:48:02 · 815 阅读 · 0 评论 -
初识Spring Cloud(二) Hystrix+Feign+Zuul
文章目录一、前言二、Hystrix2.1 Hystrix熔断器的原理(原理,重要)2.1.1 没有Hystrix熔断器,一个服务的异常影响整个微服务系统2.1.2 Hystrix熔断器的引入2.1.3 熔断器的工作机制2.2 Hystrix第一特性:线程隔离,服务降级2.2.2 注解在controller类上,同一个controller类使用同一个超时降级方法2.2.3 设置Hystrix超时时长2.3 Hystrix第二特性:服务熔断,快速失败2.3.1 熔断原理2.3.2 模拟Hystrix三个状态 c原创 2020-07-18 14:13:46 · 920 阅读 · 0 评论 -
改变bean的定义,BeanFactoryPostProcessor接口登场
一、前言涉及的类:AbstractApplicationContext类、PostProcessorRegistrationDelegate类概要:这个接口的作用:改变bean的定义(作用是学习的核心指导,要记住)看过了如何添加BeanFactoryPostProcessor,再回到PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors方法,看看如何处理这些BeanFactoryPostProcessor,整个in原创 2020-07-28 21:28:19 · 1012 阅读 · 0 评论 -
SpringFramework注解的发展与演变,从Spring 1.x到Spring 5.x
文章目录一、前言二、Spring1.x三、Spring2.x四、Spring3.x(无配置化bean装配)4.1 自己的bean去xml化4.1.1 去xml化解决IOC4.1.2 去xml化解决依赖注入4.1.3 @Import注解(扩大扫描范围)4.1.4 @Scope注解4.2 第三方bean去xml化五、Spring4.x(注解方式的完善)5.1 @Conditional条件注解六、Spring5.x(注解性能上的优化)七、小结一、前言SpringFramework注解的发展过程就是一个不断消除原创 2020-06-26 16:19:26 · 895 阅读 · 0 评论 -
提线木偶,BeanPostProcessor接口控制bean
概要:这个接口的作用:控制bean(作用是学习的核心指导,要记住)原创 2020-07-28 17:07:50 · 455 阅读 · 0 评论 -
初识Spring Cloud(一) Http通信+Eureka+Ribbon
没有人注册,Eureka报错,自己注册自己,告诉自己,查看配置参数金手指:application.properties如何配置 前面有提示,后面可以直接看this.serviceUrl=serviceUrl 点击去看 good@EnableDiscoveryClient eureka zookeeper consul@EnableEurekaClient eurekaeureka三板斧导入依赖 启动类注解 application.properties配置(位.原创 2020-07-14 23:51:02 · 1197 阅读 · 1 评论 -
同胞兄弟,ImportSelector接口与DeferredImportSelector接口的区别
文章目录一、前言二、看官方文档三、分析spring源码中对这两个接口的处理四、小结一、前言在使用@Import注解来注册bean的时候,Import注解的值可以是ImportSelector或者DeferredImportSelector的实现类,spring容器会实例化这个实现类,并执行其selectImports方法,金手指:Import注解的值可以是ImportSelector或者DeferredImportSelector的实现类,spring容器会实例化这个实现类,并执行其selectI原创 2020-07-28 14:31:53 · 1029 阅读 · 1 评论 -
谁与争锋,JDK动态代理大战CGLib动态代理
文章目录一、前言二、基本概念三、JDK 和 CGLib动态代理区别3.1 JDK动态代理具体实现原理3.2 CGLib动态代理3.3 两者对比3.4 使用注意四、JDK 和 CGLib动态代理性能对比-教科书上的描述五、使用层面:性能测试 + 模拟JDK动态代理 + 模拟Cglib动态代理六、原理层面:Fastclass机制6.1 cglib代理使用Fastclass机制七、面试金手指7.0 三种代理方式和两种动态代理方式7.1 jdk动态代理和cglib动态代理7.1.1 jdk动态代理和cglib动态代原创 2020-08-30 10:27:49 · 2813 阅读 · 0 评论 -
程序员练手必看:基于SpringCloud的电商项目
基于SpringCloud的电商项目 相关资料:源码 + 数据库:虚拟机:原创 2021-09-20 20:10:05 · 1964 阅读 · 1 评论 -
注册bean到spring容器,BeanDefinitionRegistryPostProcessor接口亮相
概要:这个接口的作用:注册bean到spring容器(作用是学习的核心指导,要记住)原创 2020-07-28 17:29:09 · 564 阅读 · 0 评论 -
所有Bean的父亲,解密Spring容器中的FactoryBean接口
文章目录一、前言二、FactoryBean概要三、使用层面:FactoryBean接口实现类四、源码解析:FactoryBean接口4.1 从spring启动开始4.2 getBean()4.2.1 isFactoryBean()4.2.2 SmartFactoryBean接口(FactoryBean接口的唯一子接口)4.2.3 存在的问题:Spring启动默认不会将自定义FactoryBean接口的实现类作为bean,注入到spring ioc容器中4.3 doGetBean()4.3.1 doGetBe原创 2020-08-29 22:17:03 · 835 阅读 · 0 评论 -
看顶级渣男如何邀约100个女朋友(二)
文章目录一、前言二、从getForObject()是如何进入LoadBalanceInterceptor.intercept()方法的三、获得服务列表,间隔更新服务列表,将服务列表存储在内存变量中3.1 过渡,从LoadBalanceInterceptor.intercept()出发...3.2 获得服务列表,间隔更新服务列表3.2.1 restOfInit()方法3.2.2 enableAndInitLearnNewServersFeature()方法3.3 将服务列表存储在内存变量中3.4 心跳机制(p原创 2021-01-10 20:22:44 · 792 阅读 · 1 评论 -
用通俗易懂的语言解释IOC
目录一、从Spring到IOC二、初识IOC(对比新建一个对象三种方式——新建方式、工厂方式、依赖注入)2.1 新建方式2.2 工厂方式2.3Spring依赖注入2.4 Spring相关问题三、IOC原理——关于Spring容器是如何完成依赖注入的整个过程的四、IOC进阶——ref的使用五、Spring的另一种配置方式——注解配置(从xml配置到注解配置)...原创 2020-02-07 21:32:37 · 2424 阅读 · 2 评论 -
Spring事件发布与接收
一、前言ApplicationContext发布广播publisherEvent()方法谁调用,模拟的时候开发者自己触发实际的ApplicationContext自己触发,ApplicationContext有四个事件举一反三金手指:事件发布三要素:listener event publisherlistener与event如何关联起来?listener有一个泛型,这个泛型就是具体的Event,且看上面图片interface ApplicationListenerpublishe原创 2020-07-29 21:29:42 · 1962 阅读 · 0 评论 -
OpenFeign,声明式的伪RPC调用(二)
文章目录前言从主代码出发,底层是如何找到方法的进一步学习前言从主代码出发,底层是如何找到方法的FeignContext从哪里来的FeignClientFactoryBean.java@Overridepublic Object getObject() throws Exception { return getTarget();}/** * @param <T> the target type of the Feign client * @return a {@link原创 2021-02-21 10:56:31 · 697 阅读 · 0 评论 -
从AOP到Spring AOP
一、前言二、AOP(AOP Spring中的AOP)2.1 引子:AOP,AOP是什么?官方解释:AOP英文全称Aspect Oriented Program,直译面向切面编程,通过预编译方式或运行期动态代理(根据具体使用何种方式划分静态AOP、动态AOP)实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,利用AOP可以对...原创 2020-02-22 16:59:13 · 1104 阅读 · 0 评论 -
SpringBoot第二特性:Starter启动依赖_01_自己动手写一个Starter组件
文章目录一、前言二、自己动手写一个Starter组件2.1 新建组件类2.2 配置类和配置属性类2.3 完成统一格式,resources目录三、使用者3.1 新建使用者类3.2 使用者导入依赖3.3 使用者HelloController.java3.4 使用者application.properties配置文件要配置好四、启动redis,运行成功4.1 直接用windows 上安装使用redis4.2 操作成功4.3 使用者application.properties没有提示如何解决?4.4 整个组件的方方原创 2020-07-10 22:14:27 · 1557 阅读 · 1 评论 -
火眼金睛,看透Spring处理Import注解的全过程
文章目录一、前言二、Enable前缀的注解上面有@Import注解三、常见的四种Import注解用法列举四、Spring对于@Import注解的处理(全文重点)五、官方API文档中的疑问解答六、金手指六、小结一、前言文章概览本章由以下几部分组成:Enable前缀的注解上面有@Import注解;常见的四种Import注解用法列举;分析spring源码,揭示Import注解的工作原理;官方API文档中的疑问解答;金手指1:Enable前缀的注解上面有@Import注解金手指2:从源码层面原创 2020-07-27 21:47:27 · 1422 阅读 · 0 评论 -
新成员加入,SpringBoot之诞生
springboot创建java应用,并使用java -jar启动它,就能得到一个生产级别的web工程。springboot工程是打成一个jar包,不是war包,但是确实是web工程。springboot是一个jar工程,所以不需要web.xmlspring.xml 没有 数据库连接+MapperScan+Mapper.xml application.properties文件代替Springboot管理数据库的四个key@Data注解 编译时生成 getter-sett.原创 2020-07-13 13:57:08 · 813 阅读 · 0 评论 -
Spring Cloud Eureka源码分析,看这一篇就好
文章目录一、前言二、Eureka Server 如何接收请求三、Eureka Client 如何注册(服务注册,已完成)3.1 Registration、ServiceRegistry和EurekaRegistration3.2 LifeCycle和SmartLifeCycle3.2.1 模拟演示学习一个SmartLifeCycle3.2.2 Eureka client注册中SmartLifeCycle3.2.2.1 SpringApplication.run()3.2.2.2 AbstractApplic原创 2020-07-19 17:18:38 · 2122 阅读 · 1 评论