在springboot中配置aop攔截器
在spring裡面還提供有一種aop攔截器配置,不過大部分的aop攔截器都是圍繞著業務層進行攔截處理的。
1、建立一個普通的業務操作介面和它的子類:
@Service
public class MemberServiceImpl implements IMemberService{
@Override
public Member get(String mid) {
Member vo = new Member();
vo.setMid(mid);
vo.setName("張三");
return vo;
}
}
現在業務層的操作完成之後隨後去修改控制層,讓控制層進行業務層的調用。
import org.springframework.web.bind.annotation.RequestMapping;
import javax.validation.Valid;
import java.util.Iterator;
@Controller
public class MemberController extends AbstractBaseController{
@Autowired
private IMemberService memberService;
@RequestMapping(value="/member_get", method = RequestMethod.GET)
@ResponseBody
public Object get(String mid) {
return this.memberService.get(mid);
}
}
訪問地址:http://localhost:8080/member_get?mid=100
現在的業務層只是一個純粹的調用而已,但是現在希望對調用的過程進行攔截處理,所以要想實現這樣的處理,那麼就需要引入新的開發依賴包,修改pom.xml配置文件:
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
SpringBoot
com.gwolf
1.0-SNAPSHOT
4.0.0
com.gwolf
springboot-base
jar
springboot-base
spring-boot-starter-web
spring-boot-starter-test
test
org.springframework
springloaded
spring-boot-devtools
spring-boot-starter-thymeleaf
spring-boot-starter-aop
junit
junit
test
編寫一個aop攔截的控制程序類。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Arrays;
@Aspect
@Component
public class ServiceAspect {
private Logger log = LoggerFactory.getLogger(ServiceAspect.class);
@Around("execution(* com.gwolf..service..*.*(..))")
public Object aroundInvoke(ProceedingJoinPoint point)
throws Throwable {
+ Arrays.toString(point.getArgs()));
Object object = point.proceed(point.getArgs());
+ object);
return object;
}
}
查看我們業務層的aop攔截輸出列印。
對於web攔截可以使用攔截器,而對於業務層的攔截可以使用Aspect表達式結合AOP的攔截機制實現。
※SpringBoot整合Mybatis實現事務控制
※反射與代理設計模式-動態代理設計模式
TAG:Adolph談JAVA高端 |