3

可能重复:
@Resource 与 @Autowired

我已经定义了一个 Spring@Controller@Scope("request")用于@Resource获取一个使用 定义的服务 bean @Scope("prototype"),但是在每次重新加载页面时,我总是得到相同的服务 bean 实例。

我发现更改@Resource@Autowired实际上以我期望的方式工作,并且每次重新加载页面时都会获得一个新的服务 bean 实例。

这是预期的行为吗?@Resource我对和之间的区别有一些了解@Autowired吗?

4

1 回答 1

1

这很奇怪,我希望它们至少在范围方面表现相同——我知道的唯一区别是关于自动装配的类型——@Autowired 的类型,@Resource 的名称。

我觉得您的问题可能更多地与需要在您的原型 bean 上使用 @Scope 注释指定 proxyMode 有关:

@Scope(value="prototype", proxyMode=ScopedProxyMode.TARGET_CLASS) //Or ScopedProxyMode.INTERFACES

这是必要的,因为request范围可能比原型范围更大。您会看到注入了相同的代理实例,但是代理将确保当您调用依赖 bean 的方法时,它被委派给适当范围的 bean。

于 2012-09-21T00:06:00.747 回答