我正在使用泽西休息,并希望泽西过滤器可以访问一些春豆.
但是正如我从其他线程中发现的那样,如果它们是Java代理而不是生成的Java代理,则Jersey不会获得Spring bean.我想添加proxy-target-class ="true"
这样做有什么影响,也可以只在一个bean上设置,还是需要在所有引用的bean上设置?
gar*_*rst 31
通过设置proxy-target-class="true"您将使用CGLIB2代理,而不是jdk代理.
如de 文档中所述,其含义如下:
无法建议最终方法,因为它们无法覆盖.
您将在类路径上需要CGLIB 2二进制文件,而JDK可以使用动态代理.Spring会在需要CGLIB时自动发出警告,并且在类路径中找不到CGLIB库类.
代理对象的构造函数将被调用两次.这是CGLIB代理模型的自然结果,其中为每个代理对象生成子类.对于每个代理实例,创建两个对象:实际代理对象和实现建议的子类实例.使用JDK代理时不会出现此行为.通常,两次调用代理类型的构造函数不是问题,因为通常只有赋值发生,并且构造函数中没有实现真正的逻辑.
此外,您应该能够通过使用为特定组件创建"目标代理"
proxyMode=ScopedProxyMode.TARGET_CLASS
Her*_*eri 19
尽管控制器正式实现了一个接口(SpringBoot 1.2.3.RELEASE with Spring 4.1.6.RELEASE),但强制使用CGLib-Proxy:
@Controller
@Scope( proxyMode = ScopedProxyMode.TARGET_CLASS )
public class ServiceImpl implements ServiceIntf
{ .... }
这样可以启用有效且有效的@RequestMapping和@Transactional注释
| 归档时间: | 
 | 
| 查看次数: | 42542 次 | 
| 最近记录: |