gpt4 book ai didi

java - 如何在每次方法调用之前和之后自动调用方法

转载 作者:太空宇宙 更新时间:2023-11-04 13:31:43 29 4
gpt4 key购买 nike

我有一个类,其中有一些方法,我想在每个方法之前和之后添加方法名称的日志。

private void log(String msg){
logger.info("=================================");
logger.info(msg);
logger.info("=================================");
}

private void method1(){
log("Here I want to print method name" + " :start");
//do stuff
log("Here I want to print method name" + " :end");
}

private void method2(){
log("Here I want to print method name" + " :start");
//do stuff
log("Here I want to print method name" + " :end");
}

理想情况下,我希望每个方法都在前后自动记录,而不必每次都为每个方法调用日志。

有办法实现这一点吗?我知道注释可能是一种选择,但我不认为我是第一个遇到这个问题的人。

最佳答案

有多种不同的方法可以实现这一目标。

首先,您可以使用装饰器设计模式。它允许您向对象添加一些附加行为。这是一个简短的例子:

public interface Car {
public String drive();
}

public class SomeCar implements Car {
@Override
public String drive() {
return "Drive some car";
}
}

public abstract class CarDecorator implements Car {
Car car;

public CarDecorator(Car newPizza) {
this.car = newPizza;
}

@Override
public String drive() {
//do somthing before

String result = car.drive();

//do someething after

return result;
}
}

您可以像这样使用它,或者通过一些汽车对象工厂创建所有实例:

Car car = new CarDecorator(new SomeCar());
car.drive();

此外,您可以使用面向方面编程(AOP)来实现您的目标。例如,使用 AspectJ或者如果您使用 Spring 框架 - Spring AOP .

还有一个解决方案是使用 Java EE Interceptors ,如果它在您的项目中可以接受。

关于java - 如何在每次方法调用之前和之后自动调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32131007/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com