自动为代理类添加新的属性状态及方法
1.定义目标对象
@Component
public class Demo {
public void menthod1(){
System.out.println("method1");
}
}
2.定义新增接口及实现类
public interface ICounter {
public void methodt();
}
@Component
public class CounterImpl implements ICounter {
@Override
public void methodt() {
System.out.println("新增接口方法");
}
}
3.定义introduction类型的拦截器
/**
* introduction类型的拦截器
*/
@Component
@Aspect
public class IntroductionAspcet {
@DeclareParents(
value="com.pactera.common.omads.test.introductionintrocaptor.Demo"
,defaultImpl = CounterImpl.class)
private ICounter counter;
}
4.测试类
@EnableAspectJAutoProxy//使切面开启自动代理
@ComponentScan()
public class AspectTest {
public static void main(String[] args) {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(AspectTest.class);
Demo bean = ctx.getBean(Demo.class);
Object demo = ctx.getBean("demo");
bean.menthod1();
ICounter demo1 = (ICounter) demo;
demo1.methodt();
}
}
运行结果:
method1
新增接口方法