专题二
(1)使用注解来完成AOP:
1,想办法把类让Spring来管理(XML配置或者注解方式)
2,在增强的提供类上添加标签:
![](https://img.haomeiwen.com/i4714126/ea8372424e59d315.png)
![](https://img.haomeiwen.com/i4714126/34f3a6a50a4e4c31.png)
![](https://img.haomeiwen.com/i4714126/3752e33316999d5e.png)
![](https://img.haomeiwen.com/i4714126/a1188df108b87c4f.png)
![](https://img.haomeiwen.com/i4714126/dbc78403b2816229.png)
![](https://img.haomeiwen.com/i4714126/7e23e1715d359ba0.png)
3,在Spring配置文件中开启注解的AOP;
![](https://img.haomeiwen.com/i4714126/e889d6f3932495d2.png)
4,关于AOP的其他知识:
1,在增强提供类的方法上,这些方法的第一参数都可以设置为org.aspectj.lang.JoinPoint;可以通过这个JoinPoint获得本次运行的方法相关信息;
![](https://img.haomeiwen.com/i4714126/552805e0d1b645c9.png)
2,针对异常通知,我们如果想获得抛出异常的相关信息:
![](https://img.haomeiwen.com/i4714126/299280e65c12e43b.png)
![](https://img.haomeiwen.com/i4714126/b490301797a5af07.png)
5,选择:
一般在项目开发中,我们推荐使用XML的方式来完成AOP;
更直观和通用;
(2)为什么选择SpringJDBC?
1,SpringJDBC能做些什么事情
![](https://img.haomeiwen.com/i4714126/1f50ed1b4ff93f04.png)
2,SpringJDBC和传统JDBC对比
![](https://img.haomeiwen.com/i4714126/4e9cf15e54ed84f1.png)
3,SpringJDBC的使用方式:
0:拷贝SpringJDBC相关jar包(spring-jdbc.jar spring-tx.jar)
1,SpringJDBC的准备工作,配置DataSource;
![](https://img.haomeiwen.com/i4714126/b1272d45b7c3aa89.png)
2,需要准备的db.properties:
![](https://img.haomeiwen.com/i4714126/5ffba15f9649b4c5.png)
3,实现自己的DAO:
接口---实现类
![](https://img.haomeiwen.com/i4714126/824643bfaf0c4211.png)
在DAO的方法中使用JdbcTemplate来调用即可:
![](https://img.haomeiwen.com/i4714126/12e1f4f6284ddae5.png)
三种查询结果集的处理方式:
![](https://img.haomeiwen.com/i4714126/67246e490197f7a9.png)
![](https://img.haomeiwen.com/i4714126/1082993f9f51876c.png)
![](https://img.haomeiwen.com/i4714126/f3c836af2334d623.png)
3,SpringJDBC还为我们提供了什么?
要使用JdbcTemplate,需要自己通过DataSource创建JdbcTemplate;代码重复;
在Spring中,为我们提供了一个JdbcDaoSupport类,在这个类中,帮我们完成了重复代码;
所以,我们的DAO只需要继承JdbcDaoSupport就可以了;但是注意,DAO一定要注入一个datasource
![](https://img.haomeiwen.com/i4714126/4a77d5cc20368b8d.png)
![](https://img.haomeiwen.com/i4714126/c1da34bbad47218e.png)
![](https://img.haomeiwen.com/i4714126/f088a6a4f8864e71.png)
(3)Spring中集成其他持久化框架的一般策略:
XXXX(Jdbc)Template+XXXX(Jdbc)DaoSupport
在XXXX(Jdbc)Template提供方便的方法;
![](https://img.haomeiwen.com/i4714126/0f84e91f07bbf80a.png)
在XXX(Jdbc)DaoSuppoert重复XXXX(Jdbc)Template的注入过程;
![](https://img.haomeiwen.com/i4714126/976ef7ae9545a1e0.png)
(4)Spring中的事务管理
1)事务为什么要开在service上?
如果事务不开在service上,而放在dao里面,每一个dao方法都是一个独立的事务;如果一个service需要使用到多个dao中的方法,如果在service中任何位置出错,都不能保证事务正确处理;
所以事务要在开在service方法上,并且,在service方法开始执行之前,得到Connection/Session,并开启事务,把Connection/session放到当前线程中;所有的DAO方法都应该从当前线程中获取Connection/Session,完成具体业务的处理,在Service方法执行结束的时候,从当前线程中拿到Connection/Session,做提交/回滚操作;最后关闭资源;
2)Spring中事务相关的重要对象:
1,PlatformTransactionManager:平台的事务管理器;在这个接口中抽象了事务管理的一般方法:开启/提交/回滚;
为什么需要TranscationManager?屏蔽不同持久化层的事务处理机制;
2,TransactionDefinition:
在这个类中定义了:定义了一个事务相关的属性;Spring会根据这个事务相关的属性来控制事务(通过配置告诉Spring的);
PROPAGATION_XX:事务的传播机制;
ISOLATION_XX:事务的隔离级别;
3,TransactionStatus:在Spring中,一个TranscationStatus代表一个事务的状态(简单理解为,TransactionStatus就是一个事务的包装);
![](https://img.haomeiwen.com/i4714126/ee0fa62b8879fda0.png)
![](https://img.haomeiwen.com/i4714126/f0b305c23b4cff60.png)
3)Spring中提供的TranscationManager(TranscationManager提供了AOP控制事务中的DO什么):
![](https://img.haomeiwen.com/i4714126/5b90fa94ac2efd88.png)
4,Spring中事务AOP控制:
1,既然是AOP控制事务,包括在什么地方,什么时间,做什么;
1,做什么:TransactionManager;
2,在什么地方:Point-cut,切入点应该是切在Service方法上;
3,在什么时间?tx:advice
2,配置(XML,Annotation)
0:引入事务相关的schema
![](https://img.haomeiwen.com/i4714126/21fb6da4d40ac7ad.png)
1,XML配置Spring事务;
配置transcationManager
![](https://img.haomeiwen.com/i4714126/cf5a5f232ce8f7b7.png)
2,配置一个事务相关的控制(在什么时间+做什么)
![](https://img.haomeiwen.com/i4714126/1e8120cc97380a03.png)
3,配置一个AOP:
![](https://img.haomeiwen.com/i4714126/d56de6d1cd2f80b6.png)
4,tx:attribute
![](https://img.haomeiwen.com/i4714126/6546d29f2f849dd8.png)
5,事务传播机制:(怎么处理当前已有的事务;)
![](https://img.haomeiwen.com/i4714126/61b2d49de43263fc.png)
REQUIRED也是默认的事务传播规则
6,使用Ann配置:
1,在类或者方法上面直接加上@Transcational标签即可;
2,在配置文件中添加
7,选择:
强烈建议使用XML的方式;
![](https://img.haomeiwen.com/i4714126/604cc4800bc26dd1.png)
![](https://img.haomeiwen.com/i4714126/4ffdbfd2920be4ae.png)
(5)SSH集成:
1)创建项目;修改编码;修改class编译目录;
2)创建Domain;
3)创建hibernate映射文件;
4)创建DAO接口;
5)hibernate和Spring集成;
1,拷贝相关jar包;
2,创建Spring配置文件;
1.创建一个db.properties;
2.01_引入db.properties
3.02_配置datasource
4.03_配置sessionfactory
6)实现DAO(自己维护HibernateTemplate)
7)配置DAO
8)创建Service接口;
9)实现service接口;
10)配置service;
11)配置hibernate的事务;
1,配置一个事务管理器;
2,配置一个tx:advice(方法上面的事务属性)
3,配置一个AOP包装事务
12)做一个测试(等service弄完直接测试service)
13)struts和spring集成;
1,拷贝struts相关jar包
2,完成action
3,配置struts2
4,正常完成页面相关内容
5,在web.xml中配置struts相关过滤器;
6,struts2和Spring集成原理
1.拷贝struts2-spring-plugin-xxxx.jar;
2.查看struts-plugins.xml
网友评论