注解定义:
@Target(AnnotationTarget.FUNCTION)
annotation class RequireEnabledFeature(val featureName:String) {
}
方面:
@Aspect
@Component
class RequireEnabledFeatureAspect {
@Around(
value = "execution(public * *(..)) && @annotation(RequireEnabledFeature)"
)
fun requireEnabledFeature(joinPoint: ProceedingJoinPoint): Any? {
return joinPoint.proceed()
}
}
使用注解:
@RequireEnabledFeature("something")
fun someFction()
现在的问题是如何在Kotlin中获得特征名称值?在点切割中注入注解对象也不起作用。有什么想法吗?看起来使用joinPoint我可以获得joinPoint.target.javaClass.methods[1].annotations[0]
,这是AnnotationInvocationHandler
的代理,但我不能从那里获得属性值。
2条答案
按热度按时间gmxoilav1#
在@Around函数中给予一下:
rbl8hiat2#
只需将注解绑定到一个通知方法参数,如下所示(我不会说Kotlin语,所以我在编写时没有编译它):