这里是我对AOP理论的理解,只是为了澄清,所以如果你看到一些看起来不对的东西
public class LoggingAspect
{
// ...
public void log(String msg) { ... }
}
public class ExceptionHandlingAspect
{
// ..
public void handle(Exception exc) { ... }
}
public class NonAOPCode
{
// ...
@LoggingAspect @ExceptionHandlingAspect
public void foo()
{
// do some stuff...
}
}
// Now in the driver
public static int main void(String[] args)
{
NonAOPCode nonAOP = new NonAOPCode();
nonAOP.foo();
}
// The AspectWeaver *magically* might weave in method calls so main now becomes:
{
NonAOPCode nonAOP = new NonAOPCode();
log(someMsg);
nonAOP.foo();
handle(someExc);
}
是否对目标或基于Java的AOP有所了解,以及为什么?如何正确使用注释来实现方面,建议,连接点,切入点和这个所谓的方面编织器?
发布于 2018-03-28 14:53:51
几个月前,我写了一篇关于如何实现将Aspect / J方面与Java注释相结合的实例的文章,您可能会发现它很有用:
http://technomilk.wordpress.com/2010/11/06/combining-annotations-and-aspects-part-1/
我相信应用于注释的方面是一个很好的组合,因为它们使代码中的方面更加明确,但以一种干净的方式,并且您可以在注释中使用参数以获得更大的灵活性。
顺便说一下,Aspect / J的工作方式是在编译时修改类,而不是在运行时修改。您通过Aspect / J编译器运行源和方面,并创建修改后的类文件。
据我所知,Spring AOP以不同的方式编织(操作类文件以包含方面处理),通过创建代理对象,我相信在实例化时(但不要听我说) 。
https://stackoverflow.com/questions/-100007828
复制相似问题