java⾃动注⼊注解_⾃动注⼊注解
‘@Autowired’ 和‘@Inject’的报错信息完全相同,他们都是通过
@Autowired and @Inject
Matches by Type
Restricts by Qualifiers
Matches by Name
@Resourceresource和autowired注解的区别
Matches by Name
Matches by Type
Restricts by Qualifiers (ignored if match is found by name)
‘@Resource’在依据name注⼊的时候速度性能表现的⽐ ‘@Autowired’ 和‘@Inject’优越,但这是微不⾜道的,不⾜以作为优先选择 ‘@Resource’的原因。我倾向于使⽤ ‘@Resource’是因为它配置起来更简洁。
@Resource(name="person")
@Autowired@Qualifier("person")
@Inject@Qualifier("person")
你也许会说使⽤字段 默认 名称作为注⼊时候的bean name,其他两种⽅式就会⼀样简洁:
@Resourceprivate Party person;
@Autowiredprivate Party person;
@Injectprivate Party person;
确实如此。但是当你需要重构代码的时候⼜如何呢?使⽤’@Resource‘⽅式只需简单修改name属性即可,⽽⽆需触及注⼊Bean的名称(注⼊Bean的时候同意使⽤接⼝名称)。所以我建议使⽤注解⽅式实现注⼊的时候遵循以下语法风格:
1.在你的组件中明确限定bean名称⽽不是使⽤默认值 [@Component("beanName")]。
2.同时使⽤’@Resource‘和它的’name'属性 [@Resource(name="beanName")]。
3.避免使⽤‘@Qualifier’注解,除⾮你要创建⼀系列类似beans的集合。例如,你也许需要建⽴⼀个set集合来存放⼀系列“规则”定义。这个时候可以选择‘@Qualifier'注解⽅式。这种⽅式使得将⼤量遵循相同规则的类放⼊集合中变得容易。
4.使⽤如下配置限定需要尽⼼组件扫描的包: [context:component-scan base-package="com.sourceallies.person"]。这样做可以减⼩spring扫描很多⽆效的包的情况。
遵循以上原则能增强你的,注解风格的,spring配置的可读性和稳定性。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论