- 博客(39)
- 问答 (1)
- 收藏
- 关注
原创 chapter06_应用上下文与门面模式
整个Spring最重要的方法,refresh(),定义了Spring的生命周期创建BeanFactory实现类扫描BeanDefinition扩展点一:调用BeanFactory后置处理器扩展点二:注册Bean后置处理器提前实例化所有的单例Bean//创建BeanFactory,并扫描BeanDefinition//在bean实例化之前,执行BeanFactoryPostProcessor//BeanPostProcessor需要提前于其他bean实例化之前注册。
2025-08-23 17:43:40
676
原创 chapter04_PropertyValues属性初始化
首先修改createBean的业务逻辑,增加一个方法调用populateBean@Override新增填充Bean属性值的方法populateBean如果属性是引用类型,那么就立即从工厂中获取,调用getBean方法此处先不考虑循环引用//A依赖B,先实例化B,先不考虑循环引用我们可以在创建BeanDefinition的时候,传入PropertyValues,便于初始化属性。
2025-08-23 17:39:44
380
原创 chapter05_从spring.xml读取Bean
通过引入spring.xml配置文件,我们就可以简化Bean的注册用户只需要编写一个xml文件,由XmlBeanDefinitionReader自动解析xml文件,生成BeanDefinition并注册到BeanFactory。
2025-08-23 17:39:02
430
原创 chapter07_初始化和销毁方法
一个Bean,在进行实例化之后,需要进行两种初始化Bean的初始化与销毁,共有三种方式(注解、接口、XML),本章节,只实现接口和XMLinitMethod。
2025-08-22 23:34:03
523
原创 chapter04_PropertyValues属性初始化
首先修改createBean的业务逻辑,增加一个方法调用populateBean@Override新增填充Bean属性值的方法populateBean如果属性是引用类型,那么就立即从工厂中获取,调用getBean方法此处先不考虑循环引用//A依赖B,先实例化B,先不考虑循环引用在调用getBean带args参数方法,使用的是构造器注入,PropertyValues则是使用set方法注入。
2025-08-16 02:07:49
159
原创 chapter03_Bean的实例化与策略模式
先扩展一下BeanFactory接口,获取bean的时候,可以传入参数,这样就可以使用带参数的构造器。由于实例化的方式很多,我们这里使用策略模式,便于以后不断地扩展。改造doCreateBean方法,灵活切换对象实例化的方式。使用传入的构造器和传入的参数表,创建CGLIB代理对象。使用传入的构造器和传入的参数表,直接new对象。给测试的Bean,新建空参构造器和有参构造器。
2025-08-16 02:07:08
268
原创 chapter02_AbstractBeanfactory与模板方法
抽象类AbstractBeanfactory实现BeanFactory接口的思路引入单例池,作为Bean的缓存如果这个Bean如果已经存在,则直接从单例池中获取如果不存在,则应该创建,然后放进单例池,然后返回创建一个抽象类,使用模板方法设计模式,定义创建Bean这个过程父类,提供单例池子类,负责创建Bean孙子类,管理BeanDefinition/*** AbstractBeanFactory,模板类,定义了getBean需要的所有方法* @Author 孤风雪影*//**
2025-06-29 22:59:05
349
原创 chapter01_BeanFactory与工厂方法
工厂生产商品,需要图纸,根据图纸生产商品而Bean定义,就是Bean的图纸一个Bean必须先要将定义注册到Bean工厂,才能进行后续的创建类对象,最适合最为图纸,可以通过反射创建BeanBean工厂,最重要的两个方法注册Bean获取BeanBean工厂,最重要的一个属性Map,存储所有的Bean定义。
2025-06-29 19:08:53
264
原创 chapter32_SpringMVC与DispatcherServlet
从本章节开始进入SpringMVC的学习,SpringMVC最重要的类就是DispatcherServletDispatcherServlet的本质是一个Servlet,回顾一下Servlet。
2025-04-16 03:22:42
666
原创 chapter21_简化MethodInvocation
本章我们简化MethodInvocation的逻辑,将cglib与jdk动态代理的内容,统一封装到ReflectiveMethodInvocation。
2025-03-06 07:46:13
270
原创 chapter16_三级缓存与提前AOP
AOP的位置,很关键之前是在initializeBean里面进行AOP现在引入了三级缓存,将AOP代码放到三级缓存一旦发生循环依赖,就会将三级缓存移动到二级。
2025-02-20 18:22:36
874
原创 chapter14_@Autowired与@Value
Autowired可以写在构造器、属性、方法上面本章只实现属性注入@Qualifier根据name注入@Inherited@Value可以写在属性、方法、参数上面本章只实现属性注入。
2025-02-18 01:40:46
630
原创 chapter15_Bean初始化后进行AOP
现在需要直接使用由Spring实例化策略(cglib或者simple)生成的对象,所以需要调整getTargetClass的逻辑。修改DefaultAdvisorAutoProxyCreator方法。之前的原始对象,是由代理直接使用构造器生成的。修改doCreateBean逻辑。准备Spring.xml文件。
2024-07-03 20:55:39
277
原创 MyBatis
对象关系映射Object:Java对象Relation:关系型数据库Mapping:映射一个Java对象,就代表了数据库中的一条记录。
2023-02-25 22:41:29
137
原创 chapter12_将AOP融入Spring
将AOP融入到Spring,依然是使用Bean后置处理器,最关键的类DefaultAdvisorAutoProxyCreator。
2020-07-28 16:56:34
174
2
原创 chapter11_AOP与代理模式
类匹配接口通知是否应适用于给定的目标类别/***/> clazz);方法匹配接口通知是否应适用于给定的方法/***/切点接口返回类匹配器和方法匹配器/**/**切点表达式最终实现借助AspectJ实现,完成了扩展点一/*** 底层用来描述切入点原语*/static {/*** 保存解析后的切点表达式*//*** 构造方法,解析传入的切点表达式*//*** 类型匹配* @return*/@Override> clazz) {/**
2020-07-21 23:01:02
195
1
原创 chapter08_Aware感知容器对象
ApplicationContextAware需要特殊处理,因为DefaultListableBeanFactory是ClassPathXmlApplicationContext的一个属性,DefaultListableBeanFactory创建Bean的时候,无法拿到ApplicationContext,所以我们使用BeanFactoryPostProcessor来传递ApplicationContext。ApplicationContextAware,感知ApplicationContext。
2020-07-18 15:50:23
200
原创 块、行内、行内块
文章目录一、块元素block二、行内元素inline三、行内块inline-block一、块元素block块元素——div、p、h1-h6、ul、ol、li所有的块级元素独占一行显示可以设置宽高二、行内元素inline行内元素——span、a、font、strong、em、i所有的行内元素都在一行上显示不能设置宽高、由内容撑开三、行内块inline-block行内块——img、input可以设置宽高、并且在一行上显示默认对齐的是基线...
2020-07-18 14:04:47
3102
原创 chapter17_多个AOP切面
一、简介1.1 什么是Tomcattomcat是web服务器软件,将做好的web项目放入tomcat中运行。1.2 什么是Servlet二、相关概念回顾2.1 软件架构C/S:客户端/服务器B/S:浏览器/服务器2.2 资源分类静态资源:所有的用户看到的是同样的结果,可以直接被浏览器解析,例如html,css,JavaScript动态资源:不同的用户会看到不同的结果,需要先转化为静态资源,再返回给浏览器。例如Servlet/Jsp,php,asp2.3 网络通信三要素I
2020-05-27 19:30:20
340
1
原创 chapter22_使用标签自动注册creator
之前需要手动在spring.xml配置文件中配置一个的Bean,Spring才会自动开启AOP,现在我们希望只需要配置一个标签,就可以开启自动AOP。
2020-05-22 22:19:38
192
1
原创 chapter23_从@Aspect到Advisor
Aspect是高级切面,Advisor是低级切面,Spring会将一个Aspect转换成多个Advisor。
2019-10-27 22:07:02
498
原创 Windwos、Mac、iPad、iPhone之间共享文件
Windows与Mac和iPad系统之间共享文件,其实是我们程序员的硬需求,今天与大家分享最佳的解决方案,让你可以躺在床上看电脑里下载的视频。一、网络的基础知识用了Windows这么多年,你真的知道专用网络与公用网络吗?专用网络:我们自己家里的wifi,以及有线,都应该设置成专用网络,因为都是自己在用,可以方便的共享文件,不用担心隐私泄露。公用网络:比如说在星巴克,以及公司,最...
2019-10-25 23:01:21
1932
原创 chapter24_解析@Around
笔者并不喜欢长篇累牍,本文试图通过精炼的语言,分享我使用Markdown的经验技巧,帮助新手快速入门。
2019-10-16 17:18:49
350
1
空空如也
Mac Apache 无法打开 终端 计算机名 乱码
2014-10-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅