探索Spring底层
文章平均质量分 91
探索Spring底层的一些笔记
起名方面没有灵感
前世大厂架构师、上市公司ceo,被小人陷害,重生为24年应届毕业生,点个关注,看我如何逆风翻盘。
展开
-
【探索Spring底层】14.谈谈参数解析器
参数解析器是Spring-Web包提供的组件,并且SpringMVC中提供了很多参数解析器。常见的参数解析器如下。原创 2022-12-23 21:42:31 · 519 阅读 · 1 评论 -
【探索Spring底层】13.深入DispatcherServlet
DispatcherServlet是SpringMVC的核心——前端控制器,但是其本质其实也就是一个HttpServlet。它主要用来拦截符合要求的外部请求,并把请求分发到不同的控制器去处理,根据控制器处理后的结果,生成相应的响应发送到客户端。DispatcherServlet作为统一访问点,主要进行全局的流程控制。原创 2022-12-20 16:44:06 · 583 阅读 · 1 评论 -
【探索Spring底层】12.谈谈代理创建器与代理创建时机
Spring中有两种切面,一种是@Aspect,另一种是Advisor其中@Aspect是高级切面,Advisor是低级切面这里的高级和低级并不代表其功能强弱,而是低级切面比较适合框架内部使用,而高级切面比较适合编码开发使用。因为低级切面的功能比较基本。@Aspect切面里面可以包含一组或多组通知与切面。而Advisor仅支持一组通知和切面。@Aspect虽然是一种高级切面,但是Spring处理这种高级切面的时候,依然会把高级切面转化成低级切面。因为只有转化为低级切面才能被Spring内部所使用。原创 2022-12-16 16:32:29 · 923 阅读 · 0 评论 -
【探索Spring底层】11.切点匹配
这里主要讲述一些切点匹配的相关例子,其主要是关于切点表达式匹配的实现。给一个类中的其中一个方法增强根据注解给方法增强Spring中@Transactional的底层实现。原创 2022-12-13 14:56:54 · 460 阅读 · 0 评论 -
【探索Spring底层】10.Spring选择代理
在前面的【探索Spring底层】7.AOP增强有提到AOP的proxy增强有两种,分别是jdkcglib简单阐述一下两种的特点jdk:要求目标必须实现接口,并且jdk代理和目标是平级关系cglib:不要求目标实现接口,cglib代理和目标是父子关系具体底层原理请看【探索Spring底层】8.手撕jdk代理原理与cglib代理原理既然这里有两种方式,Spring是如何选择的呢?下面一一道来。原创 2022-09-30 06:30:00 · 377 阅读 · 0 评论 -
【探索Spring底层】9.手撕MethodProxy原理
在前面了解了jdk代理与cglib代理原理详细可以查看这里【探索Spring底层】8.手撕jdk代理原理与cglib代理原理在学习cglib代理原理的时候,了解到执行需要增强的方法时候有两种方法反射调用代理调用而MethodProxy内部有两种不需要用反射的调用方法invoke内部无反射,结合目标使用:内部无反射,结合代理使用下面就详述一下这两个方法的底层实现。原创 2022-09-28 13:30:34 · 1113 阅读 · 0 评论 -
【探索Spring底层】8.手撕jdk代理原理与cglib代理原理
jdk代理【默认】cglib代理两者不同之处在于jdk要求实现接口,cglib不要求目标实现接口jdk代理与目标之间是平级的兄弟关系,cglib代理与目标之间是父子关系。原创 2022-09-26 21:24:16 · 576 阅读 · 0 评论 -
【探索Spring底层】7.AOP增强
AOP底层实现的方式之一是带俩,由代理结合通知和目标,提供增强功能除此以外,aspectj 提供了两种另外的 AOP 底层实现:第一种是通过 ajc 编译器在编译class 类文件时,就把通知的增强功能,织入到目标类的字节码中第二种是通过 agent 在加载目标类时,修改目标类的字节码,织入增强功能作为对比,之前学习的代理是运行时生成新的字节码注意:版本选择了 java 8, 因为目前的 aspectj-maven-plugin 1.14.0 最高只支持到 java 16。原创 2022-09-26 06:30:00 · 459 阅读 · 1 评论 -
【探索Spring底层】6.SpringBean初始化销毁与Scope
Scope是Spring中的一个关键属性,其指定了Spring中的Bean的生命周期,也可以理解为Spring容器的创建方法。对于单例对象来讲,依赖注入仅发生了一次,后续再没有用到多例的 F,因此 E 用的始终是第一次依赖注入的 F。运行上面的程序,会发现打印的bean均为同一个,但是这个设置F1的Scope为prototype。通过注入Bean时的@Bean注解的destroyMethod属性指明销毁方法。这个F1希望的是多例,但是输出的确实同一个,也就是单例。e set 注入 f代理。原创 2022-09-24 15:20:43 · 508 阅读 · 0 评论 -
【探索Spring底层】5.Aware 接口及 InitializingBean 接口
Aware接口是Spring内部提供的一些注入手段所谓内部就是不用注入一些Bean后处理器或BeanFactory就能实现某些功能1. BeanNameAware :用来注入bean的名字2. BeanFactoryAware : 用来注入BeanFactory 容器3. ApplicationContextAware :用来 注入 ApplicationContext 容器4. EmbeddedValueResolverAware :用来解析${}原创 2022-09-07 21:16:21 · 315 阅读 · 0 评论 -
【探索Spring底层】4.BeanFactory后处理器
*然后,第三步new一个PathMatchingResourcePatternResolver对象,利用getResources获取上面拼接好的路径的资源,接着遍历这些资源(class文件)。**PathMatchingResourcePatternResolver是实现了ResourcePatternResolver接口的一个类,所以有getResources方法。...原创 2022-09-02 06:00:00 · 456 阅读 · 0 评论 -
【探索Spring底层】3.Bean生命周期与Bean后处理器
【探索Spring底层】Bean生命周期与Bean后处理器1. Bean生命周期1.1 Bean后处理器之Bean生命周期扩展2. 常见的Bean后处理器2.1 AutowiredAnnotationBeanPostProcessor2.2 CommonAnnotationBeanPostProcessor2.3 ConfigurationPropertiesBindingPostProcessor3. 分析@Autowired Bean后处理器(AutowiredAnnotationB原创 2022-08-24 16:34:58 · 437 阅读 · 0 评论 -
【探索Spring底层】2.容器的实现
下面是模拟的Config、Bean1和Bean2是模拟的对象,然后接下来将会将Config定义到BeanFactory中。原创 2022-08-22 14:19:59 · 428 阅读 · 0 评论 -
【探索Spring底层】1.容器接口
SpringApplication.run()方法的返回值,则是ApplicationContext 的子类ConfigurableApplicationContext,也就是Spring容器。classpath是指当前类路径下(在jar包的话就需要像上面这样加*),而Resource是Spring中对资源的抽象。比如我这里有一个注册方法,然后异步需要发送短信,那么发布事件之后,aaa方法就会异步执行。因为这个项目下提供了三个不同的文件,就会根据里面的键值对转化为对应的语言。原创 2022-08-21 21:17:53 · 496 阅读 · 1 评论