深入了解面向切面编程(AOP)及 AspectJ 工具
1. 开发与生产阶段的 AOP 应用
在开发和测试应用程序时,对传递给方法的值进行分析是很有必要的。很多系统中,当传递给方法的值超出预期时就会出现故障。通过对应用程序进行测试,可以分析传递给方法的值,获取最大值、最小值、最频繁值等信息,进而根据这些信息优化代码。
在应用程序的开发和测试阶段,某些类型的切面非常有用。但在生产环境中,由于切面可能会产生大量数据,可能需要移除或使其失效。不过,如果生产环境中出现问题,可以轻松地将切面重新添加到应用程序中,为生产支持团队提供更多信息。
生产环境中有两个重要的需求:日志记录和计时、授权。
1.1 日志记录和计时
在实现跟踪切面时,开发者能更好地理解应用程序的执行情况。用户在使用带有图形用户界面(GUI)的软件时,操作具有不确定性,当用户报告软件错误时,往往不清楚自己的操作。因此,生产代码中需要一定程度的日志记录。同时,对系统的关键区域进行计时,有助于确定它们在实际生产使用中的性能表现。
在传统开发环境中,日志记录通常通过创建日志类来实现,示例代码如下:
public class log {
public log() {
//open log file or connect to db
}
public void store(String msg) {
// place msg in db or file
}
}
应用程序启动时,会实例化一个日志对