抛开AOP的概念,自己实现AOP,帮助理解
1、定义一个简单的接口HelloService
package com.hy.diyAOP;
public interface HelloService {
public void sayHello(String name);
}
2、HelloService的实现类HelloServiceImpl
package com.hy.diyAOP;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
@Service
public class HelloServiceImpl implements HelloService {
@Override
public void sayHello(String name) {
if(StringUtils.isEmpty(name)){
throw new RuntimeException("parameter is null");
}
System.out.println("hello!"+name);
}
}
3、定义一个拦截器接口
package com.hy.diyAOP;
import java.lang.reflect.InvocationTargetException;
public interface Interceptor {
//事前方法
public void before();
//事后方法
public void after();
/**
* 增强后的方法
* @param invocation 会调参数,可以通过它的proceed方法,回调原方法
* @return 原方法的返回值
* @throws InvocationTargetException
* @throws IllegalAccessException
*/
public Object around(Invocation invocation) throws InvocationTargetException,IllegalAccessException