
Spirng
文章平均质量分 65
Spirng源码阅读
developer@liyong
GISer
展开
-
@Configuration org.springframework.beans.factory.parsing.BeanDefinitionParsingException
通过源码我们找到了答案,在开发使用中我们要避免出现这种情况,最好不要在@Configuration 中重载Bean.Spring 5版本。原创 2025-03-18 21:18:54 · 229 阅读 · 0 评论 -
Exception in thread “main“ java.lang.ClassCastException: com.sun.proxy.$Proxy0 cannot be cast to问题记录
让我们来看一下源码,当我们的类继续了接口会默认使用JDK动态代理,这个时候我们用子类类接收对象就会产生这个强转错误。那如果我就想用上面的写法怎么办呢?其实也是有办法的我们使用CGLIB的代理就好了,因为CGLIB的代理是基于类继承的,所以不会有上面的问题。当我们执行main函数的时候,会出现异常。原创 2025-03-12 21:39:26 · 269 阅读 · 0 评论 -
@ModelAttribute-使用
比如上述方法就会将Version对象放入视图模型中,控制器的每个方法在执行的时候视图模型就有了Version对象。首先为什么在控制器的方法之前执行是因为调用控制器方法之前会初始化Model invokeModelAttributeMethods,之后才会调用控制器的方法。当不写注解的时候默认是@ModelAttribute注解,会将提交的表单数据绑定到对象中,对象的属性和表单提交的变量一一对应。主要用于将 HTTP 请求的数据绑定到控制器方法的参数或添加属性到模型中,以便在视图层使用。原创 2025-03-05 19:39:36 · 164 阅读 · 0 评论 -
Spring-循环依赖
接下来就是调用了addSington,里面如果判断是新创建的Sington做了这样几件事情:1)移除将当前Bean放到singtonObjects中 2)将singtonFactories中的singleFactory移除。这就解决了循环依赖,我的理解是通过Map存储早期的Bean,然后注入的也是早期的Bean,等到它依赖的Bean完成注入的时候,注入的早期的Bean的引用也会发生变化,类似于一个延迟加载。然后回到了ClassRoom,这个时候Student的Bean已经进行了创建,进行注入即可。原创 2024-09-07 17:28:08 · 1491 阅读 · 0 评论 -
Spring-@Bean的处理流程
这两个的区别是static直接调用方法所以它的加载不依赖于Configration的Bean实例,普通实例方法依赖于Configration这个配置类,也就是Configration这个类先要变为Bean然后进行普通方法@Bean的处理。这里还需要注意ConfigurationClassPostProcessor的优先级是优先里面最低的(也就是要优先处理,但是处理的优先尽量靠后)。2 静态@Bean也就是标注在static方法上的 实例@Bean标注在普通方法上的。原创 2024-09-07 10:41:36 · 634 阅读 · 0 评论 -
Spring-原理篇-RequestMappingHandlerMapping 全流程是怎样的呢?
到这里我们又看到了亲爱的mappingRegistry,嘿嘿就是这里没错啦,就是在这里去查找了对应的处理。在初始化的时候Spring MVC 注册了如下的几种HandlerMaping 其中RequestMappingHandlerMapping是负责处理Http请求的。我们可以看到在这个AutoConfigurationSupport中,注册了这个RequestMappingHandlerMapping 这个Bean。是不是比较熟悉了看到这个注解RequestMapping。原创 2024-07-30 11:29:16 · 377 阅读 · 0 评论 -
Spring-原理篇-DispatcherServlet 初始化 怎么和IOC进行了打通?
委托模式的体现,在初始化醒目的时候Spring MVC为我们提供了一个DispatcherServlet,映射了所有的路径,所有的请求都会先到达这里然后被转发到具体的Controller 进行处理,此文来探索一下,DispatcherServlet 初始化的时候是怎么和Spring IOC打通的。原创 2024-07-29 17:04:43 · 599 阅读 · 0 评论 -
SpringBoot-启动流程
我们平时使用注解驱动比较多,我们来看看看这个AnnotatedBeanDefinitionReader做了什么事情?我们可以很清晰的看到在这里执行了真正的调用,这样一来,我们的BeanDefinition就会被加载。好了这些重点逻辑看完了,下面就是我们比较熟悉的Spirng Context刷新了。原创 2024-08-30 15:53:46 · 570 阅读 · 0 评论