可能重复:
@Resource vs @Autowired
我已经使用@Controller
定义了一个Spring @Scope("request")
,并使用@Resource
来获取使用@Scope("prototype")
定义的服务bean,但是在每次重新加载页面时我总是得到相同的服务bean的实例。
我发现将@Resource
更改为@Autowired
实际上是按照我期望的方式工作的,并且我为每个页面重新加载获得了一个新的服务bean实例。
这是预期的行为吗?我是否对@Resource
和@Autowired
答案 0 :(得分:1)
这很奇怪,我希望它们至少在范围方面表现相同 - 我所知道的唯一区别是关于自动装配的类型 - 按@Autowired的类型,按名称@Resource。
我觉得你的问题可能更多地与需要在protoype bean上使用@Scope注释指定proxyMode有关:
@Scope(value="prototype", proxyMode=ScopedProxyMode.TARGET_CLASS) //Or ScopedProxyMode.INTERFACES
这是必要的,因为request
范围可能比原型范围更大。您会看到注入了相同的代理实例,但代理将确保在您调用依赖bean的方法时,它将被委托给适当范围的bean。