当前位置: 首页 > wzjs >正文

深圳微商城网站制作费用百度账号中心官网

深圳微商城网站制作费用,百度账号中心官网,郑州建材网站建设,如何在建设银行网站查企业年金在 Java 中,使用 AOP(面向切面编程)来添加日志是一种常见的做法,特别是当你想要在不修改业务逻辑代码的情况下记录日志时。Spring AOP(Aspect-Oriented Programming)提供了一种简单的方式来实现这一点。以下…

在 Java 中,使用 AOP(面向切面编程)来添加日志是一种常见的做法,特别是当你想要在不修改业务逻辑代码的情况下记录日志时。Spring AOP(Aspect-Oriented Programming)提供了一种简单的方式来实现这一点。以下是如何使用 Spring AOP 来添加日志记录的步骤:

1. 添加依赖

首先,确保你的项目中包含了 Spring AOP 的依赖。如果你使用的是 Maven,可以在 pom.xml 文件中添加以下依赖:

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.7.7</version></dependency>
</dependencies>

2. 配置 Aspect

创建一个 Aspect 类来定义你的日志记录逻辑。这个类将包含一个或多个切面(advice),用于在特定的连接点(join points)执行特定的逻辑。

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;@Aspect
@Component
public class LoggingAspect {private static final Logger logger = LoggerFactory.getLogger(LoggingAspect.class);@Pointcut("execution(* com.yourpackage..*(..))")public void logAllMethods() {}@Before("logAllMethods()")public void logBefore(JoinPoint joinPoint) {logger.info("Before the method: {}",joinPoint.getSignature().toShortString());}@AfterReturning(pointcut = "logAllMethods()", returning = "result")public void logAfterReturning(Object result) {logger.info("After the method: {}, Result: {}", joinPoint.getSignature().toShortString(), result);}@AfterThrowing(pointcut = "logAllMethods()")public void logAfterThrowing(JoinPoint joinPoint) {logger.error("Exception in {}",joinPoint.getSignature().toShortString(), joinPoint.getThrowable());}
}

3. 配置 Spring Boot

确保你的 Spring Boot 应用已经启用了 AOP。通常,Spring Boot 会自动配置 AOP,但如果你遇到问题,可以在主应用程序类上添加 @EnableAspectJAutoProxy 注解:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.EnableAspectJAutoProxy;@SpringBootApplication
@EnableAspectJAutoProxy
public class YourApplication {public static void main(String[] args) {SpringApplication.run(YourApplication.class, args);}
}

4.如何控制部分方法输出日志?

4.1自定义注解

可以创建自定义注解,并在需要记录日志的方法上使用这些注解。然后在 Aspect 中检查这些注解。

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Loggable {
}

使用注解

public class YourService {@Loggablepublic void yourMethod() {// 方法逻辑}public void anotherMethod() {// 方法逻辑}
}

 配置 Aspect

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;@Aspect
@Component
public class LoggingAspect {private static final Logger logger = LoggerFactory.getLogger(LoggingAspect.class);@Pointcut("@annotation(Loggable)")public void logAnnotatedMethods(JoinPoint joinPoint) {try {Object result = joinPoint.proceed();logger.info("Method {} returned {}", joinPoint.getSignature().toShortString(), result);} catch (Throwable throwable) {logger.error("Method {} threw exception", joinPoint.getSignature().toShortString(), throwable);throw throwable;}}
}

4.2 使用表达式语言指定方法

配置 Aspect

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.annotation.Before;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;@Aspect
@Component
public class LoggingAspect {private static final Logger logger = LoggerFactory.getLogger(LoggingAspect.class);// 只记录特定包下的方法@Pointcut("execution(* com.yourpackage..*(..))")public void logMethods() {}@Before("logMethods()")public void logBefore(JoinPoint joinPoint) {logger.info("Before the method: {}", joinPoint.getSignature().toShortString());}@AfterReturning(pointcut = "logMethods()", returning = "result")public void logAfterReturning(Object result) {logger.info("After the method: {}, Result: {}", joinPoint.getSignature().toShortString(), result);}@AfterThrowing(pointcut = "logMethods()")public void logAfterThrowing(JoinPoint joinPoint) {logger.error("Exception in {}", joinPoint.getSignature().toShortString(), joinPoint.getThrowable());}
}

4.3 使用 Spring AOP 注解

可以使用 Spring AOP 提供的注解来指定哪些方法需要记录日志。

定义注解

import org.springframework.stereotype.Component;@Component
public class Loggable {
}

使用注解

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class YourService {@Autowiredprivate Loggable loggable;public void yourMethod() {loggable.log();// 方法逻辑}public void anotherMethod() {// 方法逻辑}
}

配置 Aspect

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.annotation.Before;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;@Aspect
@Component
public class LoggingAspect {private static final Logger logger = LoggerFactory.getLogger(LoggingAspect.class);@Autowiredprivate Loggable loggable;@Pointcut("execution(* com.yourpackage..*(..))")public void logAllMethods() {}@Before("logAllMethods()")public void logBefore(JoinPoint joinPoint) {logger.info("Before the method: {}", joinPoint.getSignature().toShortString());}@AfterReturning(pointcut = "logAllMethods()", returning = "result")public void logAfterReturning(Object result) {logger.info("After the method: {}, Result: {}", joinPoint.getSignature().toShortString(), result);}@AfterThrowing(pointcut = "logAllMethods()")public void logAfterThrowing(JoinPoint joinPoint) {logger.error("Exception in {}", joinPoint.getSignature().toShortString(), joinPoint.getThrowable());}
}

总结

通过使用注解、表达式语言或 Spring AOP 注解,可以灵活地控制哪些方法需要输出日志,从而实现日志记录的精确控制。这有助于减少不必要的日志输出,提高日志的可读性和维护性。

http://www.dtcms.com/wzjs/497144.html

相关文章:

  • 佛山建网站常熟seo网站优化软件
  • 涟源网站建设网站维护的主要内容
  • 咸阳免费做网站公司网址检测
  • 中核工建设集团OA网站企业营销案例
  • 互助县wap网站建设公司cpc广告点击日结联盟
  • 如何利用网站新闻做推广数据分析师就业前景
  • 北京网站制作公司报价seo快速排名优化
  • 通用网站建设需求分析阳西网站seo
  • jz做网站三亚百度推广开户
  • 制作个人业务网站油烟机seo关键词
  • 淘客怎么做网站百度竞价排名查询网站
  • 南岸网站建设北京专业seo公司
  • 海口制作网站企业2022年最火的关键词
  • 网站建设到维护友情链接交换网
  • iis5.1怎么发布网站重庆森林粤语完整版在线观看免费
  • 网站设计版式重庆黄埔seo整站优化
  • 湖北去哪做经营性网站备案网站关键词推广
  • 怎么在虚拟空间做两个网站百度账号快速注册入口
  • 四川住房和城乡建设厅网站不能进入广州seo推广
  • 网站建站的尺寸专业网店推广
  • 做影视网站难吗seo网站推广专员招聘
  • 公益事业做网站线上推广方案
  • 西宁网站建设公司排名软件
  • 用dedecms做的网站百度搜索引擎推广收费标准
  • 备案的网站必须打开吗苏州seo关键词排名
  • 电商网站设计方法百度入口提交
  • 一个用户注册的网站怎么做福州seo公司
  • 校园二手书交易网站开发整合营销传播工具有哪些
  • 电信宽带做网站服务器吗企业网站有什么
  • 甘肃省第八建设集团公司网站批量关键词排名查询工具