帮人做设计的网站,自己怎么做新闻开头视频网站,手机网站后台模板,做网站如何收费如果一个接口有2个以上不同的实现类, 那么如何Autowire一个指定的实现
1:首先,UserService接口有两个实现类 UserService1和 UserService2
UserService接口 2:以下是UserService接口的两个实现类UserService1和UserService2#xff0c;请注意service注解的使用方式#xff…如果一个接口有2个以上不同的实现类, 那么如何Autowire一个指定的实现
1:首先,UserService接口有两个实现类 UserService1和 UserService2
UserService接口 2:以下是UserService接口的两个实现类UserService1和UserService2请注意service注解的使用方式这里给每个实现类标注了不同的名称方便在Resource注入时区别注入
UserService接口实现类UserService1 UserService接口实现类UserService2 比如一个接口有两个实现类这时候再按Autowired的方式去引用 在同时存在两个实现类的情况下会报错, 这是由于 Autowired 的特性决定的 Autowired 的注入方式是 byType 注入 当要注入的类型在容器中存在多个时Spring是不知道要引入哪个实现类的所以会报错。
那么在同一类型拥有多个实现类的时候如何注入呢这种场景下只能通过 byName 注入的方式。可以使用 Resource 或 Qualifier 注解。 Resource 默认是按照 byName 的方式注入的 如果通过 byName 的方式匹配不到再按 byType 的方式去匹配。 下面是几种注入方式
1. 通过 Autowired 和 Qualifier 配合注入 2使用Resource注入根据Service指定的名称区分
flag1是UserService1实现类 Service(flag1)注解指定的 3. 使用Resource注入根据默认类名区分
userService1是UserService1实现类的类名 总结 1、Autowired 是通过 byType 的方式去注入的 使用该注解要求接口只能有一个实现类。 2、Resource 可以通过 byName 和 byType的方式注入 默认先按 byName的方式进行匹配如果匹配不到再按 byType的方式进行匹配。 3、Qualifier 注解配合Autowired 一起使用。
4、Resource和Autowired都是做bean的注入时使用其实Resource并不是Spring的注解它的包是javax.annotation.Resource需要导入但是Spring支持该注解的注入。