切面除了可以为现有方法增加新功能外,还能为bean增加新方法:
1:编写普通bean
public interface Person {
public String getName();
}
@Component
public class SuperMan implements Person{
public String name;
public void setName(){
}
public String getName() {
return "i am superman";
}
}
2.编写要引入的方法及实现:
public interface Walk {
public void walk();
}
public class WalkImpl implements Walk{
public void walk() {
System.out.println("walk walk");
}
}
3.配置切面:
@Aspect
@Component
public class Advice {
@DeclareParents(value=”com.kai.vo.Person+”,defaultImpl=WalkImpl.class)
public static Walk walk;
}
注意Person是接口,一定要有“+”号,表示为所有实现类增加方法。
4.编写测试类:
public class App
{
public static void main( String[] args )
{
System.out.println( "Hello World!" );
AnnotationConfigApplicationContext an=new AnnotationConfigApplicationContext("com.kai.config");
Walk p=an.getBean("superMan",Walk.class);
p.walk();
}
}
结果为:Hello World!
walk walk