摘要:
下面配置了通用的表达式,,上面的四个就不用再配置那么长 索罗的切入点表达式了。 节省了每次都要写一长段表达式的过程 写在一个aop:aspect这个切面下面就只能当前切面用 写在切面里面 运行测试 挪到切面外面。报错了 因为切面标签报错了。如果运行测试方法就会报错。但是提示的错误不明显 原因是导了约 阅读全文
摘要:
新建项目 复制上节课的pom.xml内的代码 复制java下的代码 测试类也复制过来 配置文件也拷贝过来 logge下增加几个方法 测试方法只需要一个saveAccount方法就可以了 增加其他三种通知的配置 执行测试方法 after没有执行。 after是因为方法写错 改正 没有异常通知。原因是我 阅读全文
摘要:
写测试类来测试。。也不需要整合JUnit了就是个普通的测试类。 我们要看就是有没有给我们真正的实现 记录日志 配置起作用了。 三个方法都调用一下 目前我们的配置只能对saveAccount增强 通常情况下 我是对业务层所有的方法添加增强,尤其是在事务控制时 切点表达式的写法 访问修饰符可以省略 运行 阅读全文
摘要:
resources下新建bean.xml文件 xmlns:aop 先配置IOC aop 通知类就是logger。id配置为logAdvice表示日志的通知 梳理流程 首先我们在这有个Service它需要增强。它想在执行里面任何一个方法时都记录日志 然后我们就准备出了一个日之类。这个日志类里面就一个p 阅读全文
摘要:
新建项目 先改打包方式 导包,就先导入这俩包的坐标 aspectjweaver为了解析切入点表达式 新建业务层接口 定义三个方法 看返回和参数的区别。为了把这三类方法表现出来,并不局限于方法干什么事 1.无参无返回值 2.有参无返回值 3.有返回值无参 创建实现类,,业务层的实现类 重写三个方法,方 阅读全文
摘要:
基于接口的动态代理要求,要去被代理对象最少实现一个接口 基于子类的动态代理没有实现接口的要求。但是要求我们的被代理类不能是最终类 在Spring中可以选择基于接口还是子类的动态代理 术语 大白话。业务层看到方法就都是连接点。IAccountService中的方法。它是连接什么的呢? 连接我们的业务和 阅读全文
摘要:
阅读全文
摘要:
回到事物的案例中 我们现在希望用代码比较精简的这个AccountServiceImpl这个类。而不是一堆事物的AccountServiceImpl_OLD这个类 新建BeanFactory类 AccountService需要通过spring注入的方式。所以这里提供了set方法 代理谁就写的类加载器。 阅读全文
摘要:
代理一个普通的java类 导入cglib的包 它还有一个asm的依赖。会自动加进来 创建cglib的文件夹。把proxy里面的Client和Producer复制到cglib文件夹 Producer不实现任何的接口 Client内的代码要重新写 不能受罪种类,如果是最终类就不能再创建子类了 参数1是C 阅读全文
摘要:
创建 Producer 生产者的类 创建标准。这标准就是接口 创建消费者的类 以前的方式,客户直接找生产厂家 代理商出现以后,怎么去联系代理商 动态代理 第一个参数是ClassLoader 第二个参数是interface是字节码类型,第三个是InvocationHandler是一个接口 代理prod 阅读全文
摘要:
新建项目 实现动态代理。 动态代理的概念 买电脑找代理商 代理的出现 解决了生产厂家的一些问题 需要java中的动态代理机制 阅读全文
摘要:
转账回滚这里把异常打印出来。AccountServiceTest.java 把数据库的金额现在都改成1000块 运行测试方法 这里已经报错了。 刷新数据库内的数据。这样我们事物就控制成功了。 事物控制由于持久层回到了业务层。通过添加事物,转账可以正常的执行了。 配置变的非常的麻烦 复制一份Accou 阅读全文
摘要:
Service中就需要用到 TransactionManager中的方法。提供set方法等着spring注入 这里面所有的操作都可以加上事物控制 其他的方法都是相同的操作 这里没有返回结果 转账的方法 查询的地方需要thorw异常。产生了异常,程序就不在执行 QueryRunner注入了Connec 阅读全文
摘要:
事务管理工具类 首先需要有connection。并且是当前线程上的connection。声明connectionUtils。提供set方法等着spring来注入 有异常需要放在事务里面 close关闭并不是真正的, 而是还回到连接池中。那么现成用完了也是还回到了线程池中 线程还回的时候绑定着一个连接 阅读全文
摘要:
不是没有事务造成的 这样相当于有四个connection 每一个都有自己独立的事物 每一个自己成功就提交事务。 已经提交的就执行结束。没有提交的就报异常 让这些操作使用同一个connection 事物的控制 提供一个数据源 ,既不能用也不能自己创建。等着spring为我们注入。所以这里提供set的方 阅读全文
摘要:
使用xmlioc这个项目进行完善。 创建一个新的工程把之前的代码都复制过来。 复制pom.xml内的依赖项 java下的com包复制过来。 配置文件复制过来 测试类固执过来 内容进行删减 测试类的方法都删掉 新增方法 实现类里面添加未实现的方法 实现这个方法 用List<account>去接收 这里 阅读全文
摘要:
1、完善我们的account案例 2、分析案例中问题 3、回顾之前讲过的一个技术:动态代理 4、动态代理另一种实现方式 5、解决案例中的问题 6、AOP的概念 7、spring中的AOP相关术语 8、spring中基于XML和注解的AOP配置 阅读全文
摘要:
Junit的核心Runner在执行的时候不会创建容器。同时它字节码文件,也改不了 spring整合junit 想办法把junit里面的不能加载容器的main方法换掉。从而实现创建容器。有了容器就可以实现注入 导入spring-test这个包。在pom.xml内配置 Junit包下面有RunWith这 阅读全文
摘要:
测试类重复代码的问题 这是之前的方式 运行findAll的方法,没有问题 测试人员不需要关心上面的方法,。应该关心的各个方法是否能够正常的运行 对于一个测试工程师,只要写完变量就可以测试了。 可以使用Autowired自动注入。但是 运行还是空指针异常 分析 出现问题的原因是没有容器,所以无法注入 阅读全文
摘要:
复制上面的数据源到下面改改名字 现在就是有两个数据源 创建一个eesy02的数据库 找到sql语句再创建Account表 现在就相当于有连个库一个eesy一个是eesy02这连个库。 account里面有三条记录 eesy的库内有5条数据 把数据源2的数据库地址改成eesy02这个库 执行测试类。查 阅读全文