哪个注释,@Resource(jsr250)或@Autowired(特定于弹簧)我应该在DI中使用吗
我在过去成功地使用了@Resource(name=“blah”)和@[email protected](“blah”)
我的直觉是坚持使用@Resource标记,因为它已经得到了jsr人员的批准。
有人对此有强烈的想法吗
@Autowired(或@Inject)和@Resource都同样有效。但这是一个概念上的差异或意义上的差异
@Resource表示按名称给我一个已知资源。名称从带注释的setter或字段的名称中提取,或从name参数中提取@Inject或@Autowired尝试按类型连接合适的其他组件
所以,基本上这是两个截然不同的概念。不幸的是,@Resource的Spring实现有一个内置的回退,当按名称解析失败时,该回退会启动。在这种情况下,它返回到按类型划分的@Autowired-种类解析。虽然这种回退很方便,但也会造成很多混乱,因为人们不知道概念上的差异,倾向于使用@Resource进行基于类型的自动连接