# @Autowired無法自動注入有多個implement之解法
###### tags: `Spring` `@Autowired` `@Resource` `@Primary`
```=java
Field supChargesService in com.ysdt.schedule.service.sup.charges.ActSupportService required a single bean, but 3 were found:
- supSupplierChargesInvoiceService: defined in file [C:\workSpace2022\S_cashFlow\target\classes\com\ysdt\schedule\service\sup\charges\SupSupplierChar
gesInvoiceService.class]
- supSupplierChargesReportService: defined in file [C:\workSpace2022\S_cashFlow\target\classes\com\ysdt\schedule\service\sup\charges\SupSupplierCharg
esReportService.class]
- supSupplierChargesService: defined in file [C:\workSpace2022\S_cashFlow\target\classes\com\ysdt\schedule\service\sup\charges\SupSupplierChargesServ
ice.class]
Action:
Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @Qualifier to identify the bean that should be
consumed
```
在設定自動注入時,發現當類別有多個實現類別,導致會無法注入。
上網查詢解法為下:
1. 將@Autowired換成@Resource(name = "指定注入Bean的名稱")
```=java
@Resource(name = "redisService",type = IRedisTemplate.class)
private IRedisTemplate redisService;
```
2. 使用@Qualifier("指定注入Bean的名稱")
```=java
@Autowired
@Qualifier("redisService")
private IRedisTemplate redisService;
```
目前使用了1與2的解法
皆無法解決無法開啟的問題。
後來與公司前輩探討,有可能那隻程式比較久了 所以會一直無法判別
就直接在主要的父類別設上@Primary(當作預設)
這才解決了這個問題。
以下為範例 :
> **Controller**
```=java
@Resource(name = "studentService",type = StudentService.class)
private StudentService studentService;
```
> **Service**
```=java
@Service("studentService")
@Slf4j
@Primary
public class StudentService {
...
....
}
```