摘要: 1. name=”” 哪些方法需要有事务控制 1.1 支持*通配符 2. readonly=”boolean” 是否是只读事务. 2.1 如果为true,告诉数据库此事务为只读事务.数据化优化,会对性能有一定提升,所以只要是查询的方法,建议使用此数据. 2.2 如果为false(默认值),事务需要提 阅读全文
posted @ 2021-01-20 18:00 巧克力曲奇 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 问题: 目前我们已经能够使用SpringAOP的SchemaBased方式来实现功能扩展。在使用SchemaBased方式实现功能扩展时,发现一个扩展代码就需要声明对应的实现了指定的接口的类,这样造成代码的结构体系过于繁杂。一个通知一个类。 解决: 在一个类中声明所有的通知方法。这样又会造成Spri 阅读全文
posted @ 2021-01-20 17:17 巧克力曲奇 阅读(210) 评论(0) 推荐(0) 编辑
摘要: [1]前置通知 使用: ①声明一个普通Java类,实现BeforeAdvice接口。 ②在Spring配置文件中配置前置通知的bean对象 ③配置组装 方法: 方法名:before 调用者:代理对象中的扩展方法调用 方法体:声明切点之前执行的扩展代码 参数: Method method, Objec 阅读全文
posted @ 2021-01-20 16:22 巧克力曲奇 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 问题: 我们可以直接从Spring容器中获取mapper层的实例化对象完成数据库操作。而在业务层方法中很多时候因为业务逻辑的复杂性,会出现在业务层方法中调用多个数据库操作。而之前我们学习过事务的管理,在同一个业务中只要有一个数据库操作执行失败,其他的就算执行成功也会一并回滚。但是在Spring整合M 阅读全文
posted @ 2021-01-20 16:05 巧克力曲奇 阅读(1597) 评论(0) 推荐(0) 编辑
摘要: SpringAOP底层默认使用的JDK动态代理,但是同时也支持cglib动态代理。需要导入cglib的jar以及在Spring的配置文件中开启Cglib动态代理 阅读全文
posted @ 2021-01-20 15:19 巧克力曲奇 阅读(95) 评论(0) 推荐(0) 编辑
摘要: ①导入cglib相关jar包 ②声明真实对象和真实方法 ③创建类并声明方法完成扩展代码的声明 ④使用Cglib提供的方法获取代理对象 ⑤使用代理对象完成功能处理 阅读全文
posted @ 2021-01-20 13:22 巧克力曲奇 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 动态代理的特点: 代理对象和代理方法是动态生成的。底层流程和静态代理一致 动态代理的种类: 动态代理既然代理对象和代理方法是动态生成的,为了便于用户的调用,要求代理方法和真实方法的方法名,形参,返回值必须保持一致,具体实现如下: ①jdk动态代理(官方提供): 原则:真实对象和代理对象实现相同的接口 阅读全文
posted @ 2021-01-20 12:20 巧克力曲奇 阅读(77) 评论(0) 推荐(0) 编辑
摘要: ① 切点是某包某类的无参数的方法: 示例: execution(* com.bjsxt.service.impl.Student.test()) ② 切点是某包某类带有参数的方法 示例: execution(* com.bjsxt.service.impl.Student.test(String,i 阅读全文
posted @ 2021-01-20 12:16 巧克力曲奇 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 代理设计模式的概念: 将对某个功能的调用以及使用的代码封装起来,避免调用方式以及使用代码的直接 暴露。 代理设计模式的好处: ①简化代码的使用流程 ②保护真实的方法的调用方式 代理设计模式的种类: ①静态代理 ②动态代理 [1] 静态代理 相关概念: 真实对象:要进行功能扩展的对象 真实方法:要进行 阅读全文
posted @ 2021-01-20 12:08 巧克力曲奇 阅读(69) 评论(0) 推荐(0) 编辑
摘要: 注意: SpringAOP的注解方式实现是基于AspectJ方式的。 SchemaBased方式是没有的。 使用: ① 必须在applicationcontext.xml文件中声明注解的使用路径,方便Spring容器对象的扫描,提升扫描效率。 示例: AOP的注解: ① @Component 作用: 阅读全文
posted @ 2021-01-20 11:09 巧克力曲奇 阅读(851) 评论(0) 推荐(0) 编辑