概念:连接点、切入点、切面、通知 之间的关系:
#Aop:
@Component @Aspect public class Myadvice { @Pointcut("execution(* com.yewanjia.dao.BookDao.*d*(..))") private void pt(){} @Before("pt()") public void around(){ System.out.println("Aop around method ......"); } }
#Config:
@Configuration @ComponentScan("com.yewanjia") @EnableAspectJAutoProxy public class SpringConfig { }
#Dao:
public interface BookDao { void select(); void update(); void insert(); void delete(); }@Repository public class BookDaoImpl implements BookDao { @Override public void select() { System.out.println("this is select method ...."); } @Override public void update() { System.out.println("this is update method ...."); } @Override public void insert() { System.out.println("this is insert method ...."); } @Override public void delete() { System.out.println("this is delete method ...."); } }
#test:
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = SpringConfig.class) public class MyTest { @Autowired private BookDao bookDao; @Test public void test01(){ bookDao.delete(); } }
输出结果:
Aop around method ......
this is delete method ....
Aop表达式: