编程语言
首页 > 编程语言> > java – Spring代理不包含代理类的注释

java – Spring代理不包含代理类的注释

作者:互联网

我有一个用@Transactional注释的界面.然后实现该接口的具体类.由于注释,spring为实现接口的每个类创建一个代理.

我的问题是,在容器启动时,我正在检查是否有一些类使用特定的用户自定义类型注释进行注释(如果不是我抛出异常).似乎代理上的getAnnotation()方法返回null.

代理不应该包含与代理类关联的所有属性(例如注释)吗?

解决方法:

Spring创建代理,默认情况下JDK动态代理,它基本上创建一个动态类一个启动时(那些不错的$Proxy42类),它们就像你的接口实例.如果你现在调用get class,你将获得动态创建的类.

使用spring中的AopProxyUtils实用程序类来获取包含注释的实际Class.

而不是

Class<?> clazz = someObject.getClass();

Class<?> clazz = AopProxyUtils.ultimateTargetClass(someObject);

这应该给你实际(包装)类.

标签:spring-transactions,java,spring
来源: https://codeday.me/bug/20190723/1508457.html