黑马spring高级49讲
文章平均质量分 72
视频学习笔记
DisguiseR6
打比赛,打比赛,打比赛!!!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【第一讲】容器接口
在bean生命周期最后一步-初始化后,调用beanPostProcessor的postProcessorAfterInitialization方法,生成代理对象,与JDK动态代理,项目中采用JDK动态代理实现AOP。使用JDK动态代理要求bean实现接口,项目中定义了UserService这个接口。就是通过BeanPostProcessor的postProcessorAfterInitialization方法(初始化后)实现的。postProcessorAfterInitialization方法具体实现。.原创 2022-08-07 23:09:45 · 420 阅读 · 0 评论 -
【第二讲 】容器实现
此时打印 bean2 是为空的,因为 @Autowired 没有起作用添加此时是 调用了 getBean 才创建对象使用 beanFactory.preInstantiateSingletons()后学到了什么A. beanFactory 不会做的事B. Bean 后处理器会有排序的逻辑整理代码bean 后处理器排序逻辑问题:同时加@Autowired 和 @ Resource 那一段会生效增加比较器后,顺序发生了变化通过AnnotationConfigUtils给beanFactory添加原创 2022-08-07 23:14:32 · 426 阅读 · 0 评论 -
【第三讲】Bean 的生命周期
注解,对 lifeCycleBean 的生命周期过程进行扩展。的后处理器,需要实现。原创 2022-08-07 23:16:38 · 128 阅读 · 0 评论 -
【第四讲】Bean后处理器
由于InjectionMetadata.inject(bean1, “bean1”, null)的源码调用链过长,摘出主要调用过程进行演示。调用 InjectionMetadata 来进行依赖注入,注入时按类型查找值。是一个【干净】的容器,默认不会添加任何后处理器,方便做测试,这里用。这些注解分别是由哪个后处理器来解析的。如何去Bean工厂里面按类型查找值。也可以完成测试,只是会比使用。完成注解的解析和注入的功能。注解解析用到的后处理器时。这个后处理器就是通过调用。给 bean3 加上。...原创 2022-08-07 23:18:47 · 846 阅读 · 0 评论 -
【第五讲】BeanFactory 后处理器
实现BeanFactoryPostProcessor两处修改}try {// 模拟@ComponentScan ComponentScan componentScan = AnnotationUtils . findAnnotation(Config . class , ComponentScan . class);= null) {原创 2022-08-09 22:56:03 · 741 阅读 · 0 评论 -
【第二十讲】RequestMappingHandlerMapping 与 RequestMappingHandlerAdapter
test3中}TokenArgumentResolver 加载自定义注解并添加到配置类@Override // 是否支持某个参数 public boolean supportsParameter(MethodParameter parameter) {= null;原创 2022-08-24 21:46:40 · 1196 阅读 · 0 评论 -
【第二十一讲】参数解析器
RequestMappingHandlerAdapter 调用过程为控制器方法被封装为 HandlerMethod准备对象绑定与类型转换准备 ModelAndViewContainer 用来存储中间 Model 结果解析每个参数值解析参数依赖的就是各种参数解析器,它们都有两个重要方法supportsParameter 判断是否支持方法参数resolveArgument 解析方法参数常见参数的解析* 省略 @RequestParam* @Value。原创 2022-08-24 21:50:39 · 450 阅读 · 0 评论 -
【第二十二讲】获取参数名
如果编译时添加了 -parameters 可以生成参数表, 反射时就可以拿到参数名如果编译时添加了 -g 可以生成调试信息, 但分为两种情况普通类, 会包含局部变量表, 用 asm 可以拿到参数名接口, 不会包含局部变量表, 无法获得参数名这也是 MyBatis 在实现 Mapper 接口时为何要提供 @Param 注解来辅助获得参数名。...原创 2022-08-28 00:30:44 · 845 阅读 · 0 评论 -
【第二十三讲】对象绑定与类型转换
ServletRequestDataBinderFactory 的用法和扩展点可以解析控制器的 @InitBinder 标注方法作为扩展点,添加自定义转换器控制器私有范围可以通过 ConfigurableWebBindingInitializer 配置 ConversionService 作为扩展点,添加自定义转换器公共范围同时加了 @InitBinder 和 ConversionService 的转换优先级优先采用 @InitBinder 的转换器。...原创 2022-08-28 23:29:51 · 197 阅读 · 0 评论 -
【二十四讲】ControllerAdvice 之 @InitBinder
RequestMappingHandlerAdapter 初始化时会解析 @ControllerAdvice 中的 @InitBinder 方法RequestMappingHandlerAdapter 会以类为单位,在该类首次使用时,解析此类的 @InitBinder 方法以上两种 @InitBinder 的解析结果都会缓存来避免重复解析控制器方法调用时,会综合利用本类的 @InitBinder 方法和 @ControllerAdvice 中的 @InitBinder 方法创建绑定工厂。原创 2022-10-12 22:39:25 · 520 阅读 · 0 评论 -
【三十七讲】 Boot 骨架项目
如果要保存为一个文件加上 -o。原创 2022-10-12 22:17:04 · 144 阅读 · 0 评论 -
【三十八讲】Boot War项目
如何搭建和运行war项目。原创 2022-10-12 22:21:01 · 490 阅读 · 0 评论 -
【第三十九讲】Boot 启动流程
发布 application prepared 事件三种方式Config配置类xml 文件包扫描} };} };原创 2022-10-07 23:59:13 · 361 阅读 · 0 评论 -
【第四十讲】Tomcat内嵌容器
内嵌容器基本使用内嵌容器加载 DispatherServlet 的时机。原创 2022-10-09 20:06:19 · 232 阅读 · 0 评论 -
【第四十一讲】 Boot 自动配置
Spring Boot 是利用了自动配置类来简化了 aop 相关配置AOP 自动配置类为可以通过禁用 aop 自动配置AOP 自动配置的本质是通过来开启了自动代理,如果在引导类上自己添加了那么以自己添加的为准的本质是向容器中添加了这个 bean 后处理器,它能够找到容器中所有切面,并为匹配切点的目标类创建代理,创建代理的工作一般是在 bean 的初始化阶段完成的。原创 2022-10-09 22:52:17 · 371 阅读 · 0 评论 -
【第四十二讲】条件装配底层
条件装配的底层是本质上是 @Conditional 与 Condition,这两个注解。引入自动配置类时,期望满足一定条件才能被 Spring 管理,不满足则不管理,怎么做呢?比如条件是【类路径下必须有 dataSource】这个 bean ,怎么做呢?首先编写条件判断类,它实现 Condition 接口,编写条件判断逻辑。工程里面存在 druid 就加载 bean1,否则就加载 bean2。其次,在要导入的自动配置类上添加。,将来此类被导入时就会做条件检查。原创 2022-10-10 22:20:42 · 223 阅读 · 0 评论 -
【第四十三讲】FactoryBean
FactroryBean 的工作机制与缺憾。原创 2022-10-10 23:05:10 · 177 阅读 · 0 评论 -
【第四十四】@Indexed原理
真实项目中,只需要加入以下依赖即可。加入 依赖后重新编译会生成。原创 2022-10-11 21:54:26 · 275 阅读 · 0 评论 -
【第四十五】代理进一步理解
spring 代理的设计特点依赖注入和初始化影响的是原始对象因此 cglib 不能用 MethodProxy.invokeSuper()代理与目标是两个对象,二者成员变量并不共用数据static 方法、final 方法、private 方法均无法增强进一步理解代理增强基于方法重写。原创 2022-10-12 22:33:31 · 257 阅读 · 0 评论 -
【第四十六】 @Value 装配底层-第四讲延续
ContextAnnotationAutowireCandidateResolver 作用之一,获取 @Value 的值了解 ${ } 对应的解析器了解 #{ } 对应的解析器TypeConvert 的一项体现。原创 2022-10-12 22:35:37 · 304 阅读 · 0 评论 -
【第四十七讲】 @Autowired 装配底层
Autowired 本质上是根据成员变量或方法参数的类型进行装配如果待装配类型是 Optional,需要根据 Optional 泛型找到 bean,再封装为 Optional 对象装配如果待装配的类型是 ObjectFactory,需要根据 ObjectFactory 泛型创建 ObjectFactory 对象装配此方法可以延迟 bean 的获取如果待装配的成员变量或方法参数上用 @Lazy 标注,会创建代理对象装配此方法可以延迟真实 bean 的获取被装配的代理不作为 bean。原创 2022-10-12 22:36:31 · 494 阅读 · 0 评论 -
【第四十八讲】事件-监听器
context.close 也会调用 ApplicationListener,所以反射的时候需要进行判断,不然会报错。原创 2022-09-11 15:28:29 · 462 阅读 · 0 评论 -
【第四十九讲】事件-发布器
事件发布器模拟实现addApplicationListenerBean 负责收集容器中的监听器监听器会统一转换为 GenericApplicationListener 对象,以支持判断事件类型multicastEvent 遍历监听器集合,发布事件发布前先通过 GenericApplicationListener.supportsEventType 判断支持该事件类型才发事件可以利用线程池进行异步发事件优化。原创 2022-09-11 15:29:37 · 315 阅读 · 0 评论
分享