框架总结
mybatis
底层做了解析xml后生成实现类:session.getMapper(UserMapper.class)
ThreadLocal:Commit() 使用2维数组批处理,批量insert
mybatis:catelog add 添加识别符
Config 文件的 key: http://mybatis.org/dtd/mybatis-3-config.dtd
mapper文件的key: http://mybatis.org/dtd/mybatis-3-mapper.dtd
分步查询:
association 与 collection区别:
javaType ofType
不断的累加东西:调用tostring()时栈溢出,累加,内容一直阶乘增加
动态sql:
trim|where|set|foreach|if|choose|when|otherwise|bind
工厂模式
单例模式
代理模式
观察者模式
适配模式
静态代理:添加新功能不影响自己原有和父类,如baseServlet。缺陷:(修改原有功能)会影响原有代码
动态代理:Proxy.newProxyInstance() (不灵活)
面向方法(面向切面aop),不改类不继承,增强方法
缺陷:依赖接口,必须有一个接口
cglib代理:生成了子类,不依赖接口 (占用内存)
父类属性过多,生成子类占用更多内存
spring
ioc 控制反转: 反射 不用new交给spring容器去创建 使用xml
先有组件才能使用容器去装,激活组件以提供特定的功能
DI 依赖注入:不需要手动调用set 通过反射 配置xml赋值
依赖注入是控制反转的基础,否则如果在组件不受框架控制的情况下,框架又怎么知道要创建哪个组件?
非侵入式:基于spring开发的应用对象可以不依赖spring的API
aop:面向切面(方法)编程 动态代理与cglib
容器:一切依赖于applicationContext,创建一个spring容器
组件化:
一站式:胶水 粘合不同内容
注解:
bean对象及其他:@component 组件
dao层使用:@repository 仓库
service层使用:@service
servlet层使用:@controller
自动装配(自动注入):@autowired
多例:@scope(“property”)
找到别名注解:@qualifier
通知(advice):比如前置增强的代码。后置增强的代码。异常增强代码。返回结果通知代码。
切面(aspect):包含有通知代码的类。
横切关注点:就是我们可以添加增强代码的位置。比如前置位置,后置位置,异常位置。和返回值位置。
@Before,@After,
@AfterReturning,@AfterThrowing
目标(target):被关注的对象。或者被代理的对象
代理(proxy):为了拦截目标对象方法,而被创建出来的那个对象.(自动生成并运行)
连接点(JoinPoint):连接点指的是横切关注点和程序代码的连接
切入点(pointcut):用户真正处理的连接点
spring
声明式事务:@transactional
spring-mvc