spring IOC理解
IOC(控制反转)也称依赖注入:对象实现依赖于spring容器注入给我的对象说白了就是不用自己去new对象,spring容器直接帮你实现了
spring AOP理解
AOP(面向切面编程):反过来将日志服务模块化,并以声明的方式将它们应用到需要日志的组件上。
配置AOP:
1<aop:config
2 <aop:aspect …..
3 <aop:pointcut
4 <aop:before
spring生命周期
1,容器启动,实例化所有实现了BeanFactoyPostProcessor接口的类。他会在任何普通Bean实例化之前加载.
2,加载所有的bean,对这些Bean依赖注入
3.如果有init-method属性,调用init-method属性的方法
4.bean被正常使用
5.如果有destroy-method属性,调用destroy-method属性的方法
6销毁bean阶段
Struts知识点
struts工作原理
1.HttpServletRequest请求经过filterDispatcher,
2.filterDispatcher创建ActionProxy,
3.ActionProxy由ConfigurationManager读取Struts.xml信息,
4.ActionProxy拥有ActionInvocation实例,
5.通过ActionInvocation调用invoke方法,
6.在invoke方法里处理interception,最后处理action,然后Result回来接着处理interception
7.最后形成HttpServletResponse返回到页面请求
struts 1与2有什么区别
1.action struts1使用抽象编程,不是接口.必须继承action类,struts2可以实现接口,可是不实现接口.
2.线程 struts1只有一个并且是单例模式,必须是线程安全的.struts2为每一个请求创建一个action
3.servlet strut1依赖与servlet api 单独测试比较麻烦.struts2 不依赖于容器.允许脱离容器,单独测试
4.form strut1得到属性必须用action form接受.struts直接在action里面定义属性接受
5.struts1没有interception,
Hibernate知识点
hibernate工作流程
原理:
1.读取并解析配置文件
2.读取并解析映射信息,创建SessionFactory
3.打开Sesssion
4.创建事务Transation
5.持久化操作
6.提交事务
7.关闭Session
8.关闭SesstionFactory
为什么要用
对JDBC访问数据库的代码做了封装,实现了对数据库操作更广泛的操作与可移植性
2.使用java面向对象代替原来的面向关系操作.
3.允许你的代码以对象模式来访问数据库内容
hibernate缓存
1.一级缓存:session级别缓存
2.二级缓存:memcahe第三方实现
hibernate 性能优化
1.session.clear()的运用
2.1+N问题(1对多,在1方,查找得到了n个对象,那么又需要将n个对象关联的集合取出,于是本来的一条sql查询变成了n+1条
)
解决方法
将fetchType设为lazy
3.使用双向一对多关联,不使用单向一对多
4.不用一对一,用多对一取代