注解学习
@Component 与 @Service 相同 一般注入的时候不写value值。
- 注入 一般是标记在实现类上(一般类)上,不能注入接口。因为接口不能实例化。
@Autowired
- 引用 将上述注入到spring容器中的实例获取。
- 且 一情况下用在 接口层 应为接口都是由实现类 去实现接口。
- 也可直接引用某个一般类 相当于对改类 直接 new()实例化。
- 若该接口只有一个实现类 则注解该接口 则直接实例的是这个接口的实现类。
- 若该接口有多个实现类 则需要通过在 @Autowired 下加 @Qualifier(“ 实现类名称”) 这样才能找到正确的实现类。则根据类型确定是否有相应的实现类。
@Resource
- 引用 将上述注入到spring容器中的实例获取。
- 且 一情况下用在 接口层 应为接口都是由实现类 去实现接口。
- 也可直接引用某个一般类 相当于对改类直接 new()实例化。
- 若该接口只有一个实现类 则注解该接口,则直接实例的是这个接口的实现类。
- 若该接口有多个实现类 则需要通过在 @Resource(name = “ 实现类名称”)这样才能找到正确的实现类。即根据名称找,再根据实现类。
Java 代码
1
2
3
4
总结
针对多个实现类的接口无论是@Autowired or @Resource 都要说明要引用的是哪个实现类,当然也可以使用工厂模式实现对实现列问题。如果想实现对于多实现类的调用,最为简单的则是利用@Resource(name = “实现类名称”)。