spring的依賴注入,為什麼用介面的實作類別而不是父類的繼承類?,spring介面
@Resource
private EmployeeService employeeService;
public void setEmployeeService(EmployeeService employeeService) {
this.employeeService = employeeService;
}
報錯:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name '/login':
Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanNotOfRequiredTypeException:
Bean named 'employeeService' must be of type [com.xidian.service.imp.EmployeeService], but was actually of type [com.sun.proxy.$Proxy67]
改成介面方式:
@Resource
private EmployeeServiceInter employeeService;
public void setEmployeeService(EmployeeServiceInter employeeService) {
this.employeeService = employeeService;
}
就可以啦!
通常是service層需要aop。用介面的話,AOP可以使用java內建的動態代理,但是有點麻煩要寫介面。用類就要用第三方包cglib,但是簡單,不用寫介面
jdk規定動態代理必須用介面;當然也可以用類,用cglib可以去處理就可以了。