1. 注解和切面类之间的关系
注解和切面类通常是配合使用的:
- 注解:用来标记代码,声明某个方法或类需要被特定的切面逻辑所增强。
- 切面类:包含增强逻辑,它通过"切点"(Pointcut)来匹配被注解标记的方法,并通过"通知"(Advice)来在匹配的方法执行前后或抛出异常时执行特定的代码。
在AOP中,注解通常作为切点的一部分,用于指定哪些类或方法应该被切面逻辑所影响。切面类中的方法(即通知)根据切点的定义来执行,从而实现对标记方法的增强。
例如,在Spring框架中,您可能会定义一个注解@LogExecutionTime
来标记需要记录执行时间的方法,并创建一个切面类来实现具体的时间记录逻辑。切面类中的方法会检测到@LogExecutionTime
注解的存在,并在注解的方法执行前后记录时间,这样原有业务逻辑不受影响,同时增加了执行时间记录的功能。
2. 为什么要自定义注解?
- 声明性编程:自定义注解允许开发者通过声明性方式标记代码,增强代码的可读性和易维护性。
- 代码分离:注解可以将关注点(如日志、事务管理)从业务逻辑中分离出来,这样可以使业务逻辑更加清晰。
- 灵活性:通过自定义注解可以灵活地为特定方法或类添加额外的行为,而不需要改变方法或类本身的代码。
3.自定义切面类的目的
- 集中处理:切面类允许集中处理横切关注点(cross-cutting concerns),例如日志、安全、事务等。
- 复用性:相同的切面逻辑可以被应用到多个不同的组件上,实现逻辑的复用。
- 配置驱动:切面类可以通过配置来启用或禁用,使得功能的切换变得灵活。
4.在Mapper方法上加入自定义的注解的作用
- 标记作用:在Mapper方法上使用自定义注解,可以标记这些方法需要特殊处理,如权限验证、缓存处理等。
- 易于维护:将特殊处理逻辑与Mapper的业务逻辑分离,有助于代码维护和未来的扩展。