I want to inject a service into another generic service.
I have an abstract class ApplicationAccessor:
@Component
public abstract class ApplicationAccessor {
    @Autowired
    protected ApplicationRepository applicationRepository;
    @Autowired
    protected ApplicationTypeRepository applicationTypeRepository;
    public abstract List<ApplicationTypeEntity> getAllApplicationsTypes();
    public abstract List<ApplicationEntity> getAllApplications();
}
Which is extended by two Application Accessors:
@Component
public class DefaultApplicationAccessor extends ApplicationAccessor {
    @Override
    public List<ApplicationTypeEntity> getAllApplicationsTypes() {
        return this.applicationTypeRepository.findAllNonRemoteWorkApplicationTypes();
    }
    @Override
    public List<ApplicationEntity> getAllApplications() {
        return this.applicationRepository.findAllNonRemoteWorkApplications();
    }
}
And RemoteWorkApplicationAccessor which is very similar to the one above.
I also have ApplicationService which is generically dependent on ApplicationAccessor
@Service
public class ApplicationServiceImpl<T extends ApplicationAccessor> implements ApplicationService<T> { }
And ApplicationService (interface that implements ApplicationServiceImpl):
public interface ApplicationService<T extends ApplicationAccessor> { }
In ApplicationServiceImpl I want to have a generic property with type T being ApplicationAccessor which is autowired:
@Autowired
private T applicationAccessor;
Then in the controller I want to inject generic ApplicationService:
@Autowired
private ApplicationService<DefaultApplicationAccessor> applicationService;
But unfortunately I get an error:
Parameter 0 of constructor in ApplicationServiceImpl required a single bean, but 2 were found:
- defaultApplicationAccessor: defined in file [...]
- remoteWorkApplicationAccessor: defined in file [...]
What can I do to fix it?
 
    