愿景:"让编程不再难学,让技术与生活更加有趣"
更多架构课程请访问 xdclass.net
第1集 设计模式在框架和源码里面的应用和准备
简介:介绍设计模式的在jdk源码的应用和Spring源码准备
-
前面在jdk源码里面有讲多个设计模式,大家回想下
-
迭代器设计模式:Iterator类
-
装饰器模式:BufferedInputStream类
-
单例设计模式JDK中Runtime类
-
建造者模式 StringBuilder类
-
适配器模式 JDBC数据库驱动
-
享元模式 JAVA 中的 String
-
策略设计模式 Comparator 接口常用的 compare()方法
-
-
Spring准备源码地址
-
下载导入idea
-
spring框架应用种设计模式:简单工厂模式、工厂方法模式、单例模式、代理模式、观察者模式 等等
第2集 单例设计模式在Spring框架里面的应用
简介:单例模式在Spring框架里面的应用
-
scope属性值 singleton:单例, 默认值,调用getBean方法返回是同一个对象,实例会被缓存起来,效率比较高 当一个bean被标识为singleton时候,spring的IOC容器中只会存在一个该bean
<!--<bean id="video" class="net.xdclass.sp.domain.Video" scope="singleton"> -->
<bean id="video" class="net.xdclass.sp.domain.Video" scope="prototype">
<property name="id" value="9"/>
<property name="title" value="Spring 5.X课程" />
</bean>
-
scope属性值 prototype: 多例,调用getBean方法创建不同的对象,会频繁的创建和销毁对象造成很大的开销
private static void testScope(ApplicationContext context){
Video video1 = (Video)context.getBean("video");
Video video2 = (Video)context.getBean("video");
//靠匹配内存地址,== 是匹配内存地址
System.out.println( video1 == video2 );
}
第3集 模板方法模式在Spring框架里面的应用之JDBCTemplate
简介:讲解模板方法模式JDBCTempalte的应用
-
模板方法模式在Spring源码JDBCTemplate的应用
-
入口
public List<Map<String, Object>> queryForList(String sql)
第4集 代理和策略模式在Spring框架里面的应用
简介:讲解代理和策略模式在Spring里面的应用
-
程序代码里面的代理
什么是静态代理: 由程序创建或特定工具自动生成源代码,在程序运行前,代理类的.class文件就已经存在
什么是动态代理: 在程序运行时,运用反射机制动态创建而成,无需手动编写代码
JDK动态代理
CGLIB动态代理
-
两种动态代理的区别:
-
JDK动态代理:要求目标对象实现一个接口,但是有时候目标对象只是一个单独的对象,并没有实现任何的接口,这个时候就可以用CGLib动态代理
-
CGLib动态代理,它是在内存中构建一个子类对象从而实现对目标对象功能的扩展
-
JDK动态代理是自带的,CGlib需要引入第三方包
-
CGLib动态代理基于继承来实现代理,所以无法对final类、private方法和static方法实现代理
-
-
Spring AOP中的代理使用的默认策略:
-
如果目标对象实现了接口,则默认采用JDK动态代理
-
如果目标对象没有实现接口,则采用CgLib进行动态代理
-
如果目标对象实现了接口,程序里面依旧可以指定使用CGlib动态代理
-
-
核心类
AopProxy
JdkDynamicAopProxy
CglibAopProxy
ProxyFactoryBean # protected Object getProxy(AopProxy aopProxy)
目录
第3集 模板方法模式在Spring框架里面的应用之JDBCTemplate