springboot面向切面编程AOP
导入依赖
<!--AOP-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
AOP拦截处理类
/**
* @Aspect 这是一个切面
* @Component 放入component中,springboot才能自动注入
*/
@Aspect
@Component
public class AopAspect {
private static final Logger logger= LoggerFactory.getLogger(AopAspect.class);
// 添加service
@Autowired
private UserService userService;
// 切入点:checkUser
// @annotation(com.carter.annotation.AopAnnotation)(不美观)
// 通常用表达式 *是通配符
@Pointcut("execution(* com.carter.service.*.*(..))")
public void checkService(){
logger.info("拦截请求start");
}
// 前置通知 joinPoint:获取拦截的方法
@Before("checkService()")
public void check(JoinPoint joinPoint){
System.out.println("执行"+joinPoint+"方法之前...");
}
}
AOP术语
@Before(“前置通知”) // 运行异常,将不执行
@After(“后置通知”) // 不管是否正常运行,都会执行
@AfterReturning(“返回通知”) // 返回值正常时执行
@AfterThrowing(“异常通知”) // 出现异常后执行
@Around // 环绕通知(有前,有后)
slf4j日志打印
- yaml中的配置
// 控制台输出
logging.pattern.console="%d - %msg%n" // %d:日期,-:就是一个杠,%msg:日志内容,%n:换行
// 输出到文件中
logging.file.name="文件输出的名字"
logging.file.path="文件输出的日志"
不使用与spring2.1.0的lombok插件
环境配置
<!--日志-->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</dependency>
<!--简单日志门面-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
properties配置
%d日期 %p级别 %n回车 %msg信息
#开启debug层的日志打印
logging:
level:
com:
carter:
dao: debug
pattern:
#控制台输出格式
console: "%d 【%p】 %msg%n"
#日志文件输出格式
file: "%d 【%p】 %msg%n"
#日志输出的路径
path: C:\Users\海角天涯S\Desktop\springcloud-shop
#日志的名字
file: C:\Users\海角天涯S\Desktop\springcloud-shop\consumer.log
2020-09-24 16:31:47,186 【ERROR】 Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is feign.RetryableException: Read timed out executing GET http://product-service/product/queryAllProduct?currPage=1&pageSize=6] with root cause
java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method) ~[na:1.8.0_45]
cause
java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method) ~[na:1.8.0_45]