这是我的Spring AOP配置。
通过这个介绍,我可以调用IntroducedInterface中的方法。但是,我无法访问OriginalClass的方法。在上面的代码片段中,我从未打印出“这是OriginalClass”。
根据“Introduction”的定义,我理解实现新接口的代理将扩展自OriginalClass,并使其方法也可访问。
我错过了什么吗?如果有的话,有人能解释一下原因吗?
PS: 以下是Spring in Action(第3版)中描述此内容的图片。
<bean id="myObject" class="com.madzone.learn.spring.aop.OriginalClass"></bean>
<bean id="aspect" class="com.madzone.learn.spring.aop.AspectClass"></bean>
<aop:config>
<aop:aspect ref="aspect">
<aop:declare-parents
types-matching="com.madzone.learn.spring.aop.OriginalClass+"
implement-interface="com.madzone.learn.spring.aop.IntroducedInterface"
default-impl="com.madzone.learn.spring.aop.IntroducedInterfaceImpl" />
</aop:aspect>
ApplicationContext context = new ClassPathXmlApplicationContext("myApp.xml");
Object myObject = context.getBean("myObject");
if (myObject instanceof OriginalClass) {
System.out.println("This is OriginalClass");
}
if(myObject instanceof IntroducedInterface) {
System.out.println("This is IntroducedInterface");
}
通过这个介绍,我可以调用IntroducedInterface中的方法。但是,我无法访问OriginalClass的方法。在上面的代码片段中,我从未打印出“这是OriginalClass”。
根据“Introduction”的定义,我理解实现新接口的代理将扩展自OriginalClass,并使其方法也可访问。
我错过了什么吗?如果有的话,有人能解释一下原因吗?
PS: 以下是Spring in Action(第3版)中描述此内容的图片。
![Can the caller access both the interfaces 'Existing method' and 'Introduced method'?](https://istack.dev59.com/5OOF4.webp)