记录:
一。程序耦合
以下体现了程序耦合:
1.注册驱动
2.获取链接
3.获取操作数据库的预处理对象
4.执行sql,得到数据集
5.遍历结果集
6.释放资源
二。IOC
工厂模式为读取配置文件,(id-name)通过文件 用反射获取对象,存入容器map。—>spring完成。
1. 三种ApplicationContext:ClassPathXmlApplicationContext和FileSystemXmlApplicationContext以及AnnotationXmlApplicationContext
2.
ApplicationContext: 单例对象适用
构建核心容器时,创建对象的策略是采用立即加载的方式。读完配置文件马上就加载文件中的对象。
BeanFactory: 多例对象适用
延迟加载,根据ID获取对象时创建对象。
BeanFactory位于最顶层,功能较少,一般都用applicationcontext。
3.Spring对bean的管理细节:
1)创建bean的三种方式
A。使用默认构造方式实现。 配置文件bean标签,id class,类中若无默认构造函数则对象无法创建。
B。使用工厂中的普通方法创建对象(使用某个类中的方法创建对象,并存入spring容器)。
C。使用工厂中的静态方法创建对象(使用某个类中的静态方法创建对象,并存入spring容器)。
2)bean对象的作用范围
3)bean对象的生命周期
单例:close();多例:垃圾回收
使用
三。spring的依赖注入DI
注入方式:
1.构造函数注入
缺点在于改变了bean对象的实例化方式,创建对象时用不到某些数据也必须提供。
2.set方法注入 更常用
集合数据注入
main()
三:基于注解的IOC
1.注解分为四类。
1)
2)Autowired多个类型匹配时先按照类型匹配,再按照变量名匹配,都不匹配则报错
3)
4)
案例一:基于XML
注意:QueryRunner scope = “prototype”配置为多例对象,避免不同dao使用时出现线程异常。
案例二:基于注解
2.Spring中的新注解
用.java替换xml文件
p.42
执行
3.集合junit单元测试。
四。Spring的AOP
自己实现
(一)
1.事务控制
ConnectionUtils.java
2.动态代理
动态代理是对一些已经写好的方法,在不需要修改源码的基础上进行增强。
与继承的区别:https://blog.csdn.net/qq_32101859/article/details/50733543
动态代理:不用手动编写一个代理对象,不需要一一编写与目标对象相同的方法,这个过程,在运行时的内存中动态生成代理对象。------字节码对象级别的代理对象
如果写一个子类的话,需要重写父类方法中的所有代码,而使用代理的话,代理者只需修改该方法中的部分代码即可。
1)基于接口的动态代理(必须实现接口
proxyProducer.saleProduct(10000f);
2)基于子类的动态代理,(第三方jar包cglib,被代理类不能是最终类
执行被代理对象的任何方法都会经过intercept方法,前三个参数和invoke是一样的
3.动态代理实现事务控制:
创建service的代理对象
(二)
1.spring中的AOP
spring的一些术语
连接点是指(service业务层——被代理类的)方法;所有的切入点都是连接点,切入点是被增强的连接点。
通知的类型
使用aop开发过程:
2.XML配置AOP
Spring自动生成代理类来增强。
切入表达式通配写法:
xml配置
手动.java注解配置
3.基于注解配置通知。有顺序问题!
五。Spring的事务控制
1.
2.基于xml的声明式事务配置
3.基于注解的…
SpringMVC