Spring课程 Spring入门篇 5-6 introductions应用
课程链接:
1 解析
1.1 aop:declare-parents 标签简介
1.2 标签使用样式
2 代码演练
2.1 introductions标签应用
1 解析
1.1 aop:declare-parents 标签简介
允许一个切面声明一个实现指定接口的通知对象,并且提供了一个接口实现类来代表这些对象
不同于aop:before等其他标签,元素声明该元素用于声明所匹配的类型拥有一个新的parent(父类)。所以测试类getBean后可以强转
1.2 标签使用样式
<aop:declare-parents types-matching=" com.imooc.aop.schema.advice.biz.*(..))" <!--包-->implement-interface="com.imooc.aop.schema.advice.Fit" <!--接口-->default-impl="com.imooc.aop.schema.advice.FitImpl" <!-- 实现类--> />
2 代码演练
2.1 introductions标签应用
实体类:
package com.imooc.aop.schema.advice.biz;public class AspectBiz {public void biz(){System.out.println("MoocAspect biz"); // throw new RuntimeException(); }public void init(String bizName,int times){System.out.println("AspectBiz init:"+ bizName + " "+times);} }
测试类:
package com.imooc.test.aop;import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.BlockJUnit4ClassRunner;import com.imooc.aop.schema.advice.Fit; import com.imooc.aop.schema.advice.biz.AspectBiz; import com.imooc.test.base.UnitTestBase;@RunWith(BlockJUnit4ClassRunner.class) public class TestAOPSchemaAdvice extends UnitTestBase {public TestAOPSchemaAdvice(){super("classpath:spring-aop-schema-advice.xml");}@Testpublic void testBiz(){AspectBiz aBiz = super.getbean("AspectBiz");aBiz.biz();}@Testpublic void testInit(){AspectBiz aBiz = super.getbean("AspectBiz");aBiz.init("moocService",3);} @Test/*** 配合spring-aop-schema-advice.xml 使用,调的是接口类,但是实际使用的是实现类*/public void testFit(){Fit fit = (Fit)super.getbean("AspectBiz");fit.filter();} }
配置文件:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd"><bean id = "moocAspect" class = "com.imooc.aop.schema.advice.MoocAspect"></bean> <bean id = "AspectBiz" class = "com.imooc.aop.schema.advice.biz.AspectBiz"></bean><aop:config><aop:aspect id="moocAspectAOP" ref="moocAspect"> <!-- 声明切入点:从哪里开始执行 --> <!-- 执行com.imooc.aop.schema.advice.biz包下的所有Biz结尾的java类中的所有方法时 --> <!-- <aop:pointcut expression="execution(* com.imooc.aop.schema.advice.biz.*Biz.*(..))" id="moocPointCut"/> --> <!-- <aop:before method="before" pointcut-ref="moocPointCut"/> --> <!-- <aop:after-returning method="afterreturning" pointcut-ref="moocPointCut"/> --> <!-- <aop:after-throwing method="throwing" pointcut-ref="moocPointCut"/> --> <!-- <aop:after method="after" pointcut-ref="moocPointCut"/> --> <!-- <aop:around method="around" pointcut-ref="moocPointCut"/> --><!-- <aop:around method="aroundInit" pointcut="execution(* com.imooc.aop.schema.advice.biz.AspectBiz.init(String,int)) and args(bizName,times)"/> --><!-- type-matching 要匹配的是这个包下的所有方法,(后便注释是我自己解释的,看不懂可以不看,报错了可以仔细想一下)注意:type-matching 一定要匹配这个包下的所有类(包含我要执行的接口,实现类,以及super.getBean到的类) -->
<aop:declare-parents types-matching=" com.imooc.aop.schema.advice.biz.*(..))"
implement-interface="com.imooc.aop.schema.advice.Fit"
default-impl="com.imooc.aop.schema.advice.FitImpl"/>
</aop:aspect> </aop:config></beans>
接口:
package com.imooc.aop.schema.advice;public interface Fit {void filter(); }
实现类:
package com.imooc.aop.schema.advice;public class FitImpl implements Fit {@Overridepublic void filter() {System.out.println("FitImpl 执行中");}}
打印日志:
四月 20, 2019 9:50:09 上午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh 信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@6e1d4150: startup date [Sat Apr 20 09:50:09 CST 2019]; root of context hierarchy 四月 20, 2019 9:50:09 上午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 信息: Loading XML bean definitions from class path resource [spring-aop-schema-advice.xml] FitImpl 执行中 四月 20, 2019 9:50:09 上午 org.springframework.context.support.ClassPathXmlApplicationContext doClose 信息: Closing org.springframework.context.support.ClassPathXmlApplicationContext@6e1d4150: startup date [Sat Apr 20 09:50:09 CST 2019]; root of context hierarchy
转载于:https://www.cnblogs.com/1446358788-qq/p/10740000.html
Spring课程 Spring入门篇 5-6 introductions应用相关推荐
- Spring课程 Spring入门篇 总结
参考4.9 转载于:https://www.cnblogs.com/1446358788-qq/p/10668363.html
- 第一篇:Spring Boot 快速入门篇
小技巧: Spring Boot 集成周边技术3部曲 1.pom文件引入maven依赖 2.配置文件中配置相关信息 3.启动类上加注解 一.Spring Boot 构建项目有2种方式: Maven 构 ...
- spring boot(一):入门篇
构建微服务:Spring boot 入门篇 什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框 ...
- 视频教程-①Spring Cloud 第一季(初级入门篇)-Java
①Spring Cloud 第一季(初级入门篇) 2011年毕业后在澳门 遊澳集团(UO Group)旗下某IT科技公司从事 android,php,j2ee开发工作,负责 国际短信发送系统.银联支付 ...
- (转)构建微服务:Spring boot 入门篇
转自: Spring Boot(一):入门篇 - 纯洁的微笑 - 博客园 : 什么是Spring Boot Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 S ...
- (转)Spring boot(一):入门篇
https://www.cnblogs.com/ityouknow/p/5662753.html#!comments 构建微服务:Spring boot 入门篇 什么是Spring Boot Spri ...
- Spring Boot(一)入门篇
Spring Boot干货系列:(一)优雅的入门篇 前言 Spring一直是很火的一个开源框架,在过去的一段时间里,Spring Boot在社区中热度一直很高,所以决定花时间来了解和学习,为自己做技术 ...
- Spring cloud eureka 入门使用及指导说明(单机篇)
Spring cloud eureka 入门使用及指导说明(单机篇) 基本概念和方案 Eureka是基于REST(Representational State Transfer,代表性状态传输)的服务 ...
- Spring Boot (16)---优雅的入门篇
Spring Boot (16)---优雅的入门篇 Spring一直是很火的一个开源框架,在过去的一段时间里,Spring Boot在社区中热度一直很高,所以决定花时间来了解和学习,为自己做技术储备. ...
- Spring Boot 2.0 WebFlux 教程 (一) | 入门篇
目录 一.什么是 Spring WebFlux 二.WebFlux 的优势&性能 三.WebFlux 应用场景 四.适用性 五.快速入门 5.1 添加 webflux 依赖 5.2 定义接口 ...
最新文章
- oracle 和sybase比较,oracle和sybase的一些区别
- 2021年春季学期-信号与系统-第十一次作业参考答案-第五小题
- Android MediaPlayer
- boost::geometry::svg用法的测试程序
- php 8 jit,PHP JIT 是什么?PHP8 新特征之 JIT 图文详解_后端开发
- Java程序创建Kafka Topic,以及数据生产消费,常用的命令
- pycharm ubuntu 安装_Nvidia Jetson Xavier 安装配置(ubuntu 18.04)
- 两种可以支持跨域的方式 - 讲解篇
- 【转】JMeter学习(二十八)内存溢出解决方法
- B+树 范围查询_为什么 MySQL 使用 B+ 树,而不是 B 树或者 Hash?
- 一句话木马:ASPX篇
- 无线接入中的移动技术
- 【转载】MiniUtilityFramework(九):CText和TEXT
- 阿里云Oss获取图片的大小信息
- 3D模型欣赏:银发美女 ,性感女骑士
- 网状神经系统的典型特点,网状结构神经系统
- 基于软总线的实时组件调度技术研究
- Excel解析与数据生成(撑持JXL,POI)
- 京东高效转链API接口—商品优惠券二合一转链—京东联盟优惠券如何转链?
- ntp协议客户端服务器模式,思科配置NTP客户端服务器模式