【发布时间】:2011-08-30 04:32:12
【问题描述】:
这是一个了解弹簧内部结构的问题。由于@Autowired 不起作用,建议在春季自我注入 bean 的一些解决方法。这里是fewthreads。我想知道自注入在技术上与@Resource 注释一起工作的原因以及如何工作?
@Service(value = "someService")
public class UserService implements Service{
@Resource(name = "someService")
private Service self;
}
任何指向 spring 源代码的链接都将不胜感激。谢谢。
【问题讨论】:
-
一开始你为什么要做这么可怕的事情?
-
让 Spring AOP 拦截内部方法调用。仅仅因为这个原因转向 AspectJ 似乎不切实际。
-
如果你需要这个,那么你不应该使用基于代理的方法,这真的不是改变,而是根据需要选择正确的东西,而不是试图找到可怕的解决方法。甚至 Spring docs 也建议如果您使用的是 Spring AOP,那么您不应该使用自调用,否则请查看 AspectJ,因为它没有自调用问题。
-
@Falcon:但有时避免自调用会非常尴尬(例如,因为 AOP 支持正在改进到现有的复杂应用程序中),并且 AspectJ 编织器可能与某些环境交互不佳。跨度>
-
有时应用程序只在少数地方需要这种自注入功能。因此,没有太多需要转向 AspectJ。 AspectJ 有自己的一组功能,例如编译时编织、各种更多的连接点,然后是 Spring AOP,只有在实际需要时才能使用:)
标签: spring annotations