gpt4 book ai didi

java - Spring代理不包含被代理类的注解

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:56:37 25 4
gpt4 key购买 nike

我有一个用@Transactional 注释的接口(interface)。然后是实现该接口(interface)的具体类。由于注解,spring 为每个实现该接口(interface)的类创建了一个代理。

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

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

最佳答案

Spring 会创建代理,默认情况下会创建 JDK 动态代理,它基本上会在启动时创建一个动态类(那些不错的 $Proxy42 类),其作用类似于接口(interface)的实例。如果您现在调用 get class,您将获得动态创建的类。

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

所以代替

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

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

那应该给你实际的(包装的)类。

关于java - Spring代理不包含被代理类的注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19134805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com