1.简单继承结构的泛型依赖注入
我们使用最简单的继承结构来实现泛型的依赖注入,带泛型的类baseEntity,继承了baseEntity的user和organization,以及一个方便理解泛型依赖注入是怎么回事。
1.创建baseEntity
package com.hao.spring.autowired.model;
public class BaseEntity<T> {
private Integer status;
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
}
2.创建user并继承baseEntity
package com.hao.spring.autowired.model;
import org.springframework.stereotype.Repository;
@Repository
public class User extends BaseEntity<User>{
private String userName;
private Integer age;
private String sex = "男";
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
3.创建organiztaion并继承baseEntity
package com.hao.spring.autowired.model;
import org.springframework.stereotype.Repository;
@Repository
public class Organization extends BaseEntity<Organization> {
private String orgName;
public String getOrgName() {
return orgName;
}
public void setOrgName(String orgName) {
this.orgName = orgName;
}
public Organization() {
super();
}
public Organization(String orgName) {
super();
this.orgName = orgName;
}
}
4.创建baseEntityServiceImpl,在该类中注入带User泛型的baseEntity
package com.hao.spring.autowired.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.hao.spring.autowired.model.BaseEntity;
import com.hao.spring.autowired.model.User;
@Service
public class BaseServiceImpl{
@Autowired
private BaseEntity<User> baseEntity;
public void baseSave() {
System.out.println("创建 了"+baseEntity.getClass().getSimpleName());
};
}
5.当我们在测试类型获取BaseServiceImpl类型的对象时,我们可以看到spring会根据我们指定的泛型帮我们注入User对象