面向切面:所有业务都要处理的业务。 例如:日志服务
1.在使用AOP之前,在pom.xml文件中导入相关依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
2.编写一个Aspect实现在Logger功能:
package com.example.demo.aspect;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class LogAspect {
private static final Logger logger = LoggerFactory.getLogger(LogAspect.class);
@Before("execution(* com.example.demo.controller.Index.*(..))")
public void BeforeAccessCheck() {
logger.info("before method");
}
@After("execution(* com.example.demo.controller.Index.*(..))")
public void AfterAccessCheck() {
logger.info("after method");
}
}
3.监控的Controller
package com.example.demo.controller;
import com.example.demo.aspect.LogAspect;
import com.example.demo.service.WendaService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.view.RedirectView;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.Arrays;
import java.util.List;
@Controller
public class Index {
private static final Logger logger = LoggerFactory.getLogger(LogAspect.class);
@RequestMapping("/home")
@ResponseBody
public String index(){
logger.info("VISIT HOME!");
return "index string!";
}
}
4.运行结果:
参考文档:https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#spring-core