Spring4范型service注入
实体
public class User implements Serializable {
private Long id;
private String name;
}
public class Organization implements Serializable {
private Long id;
private String name;
}
数据访问Repository
public abstract class BaseRepository<M extends Serializable> {
public void save(M m) {
System.out.println("=====repository save:" + m);
}
}
@Repository
public class UserRepository extends BaseRepository<User> {
}
@Repository
public class OrganizationRepository extends BaseRepository<Organization> {
}
之前的注入的服务: 每个必须写个setter
public abstract class BaseService<M extends Serializable> {
private BaseRepository<M> repository;
public void setRepository(BaseRepository<M> repository) {
this.repository = repository;
}
public void save(M m) {
repository.save(m);
}
}
@Service
public class UserService extends BaseService<User> {
@Autowired
public void setUserRepository(UserRepository userRepository) {
setRepository(userRepository);
}
}
@Service
public class OrganizationService extends BaseService<Organization> {
@Autowired
public void setOrganizationRepository(OrganizationRepository organizationRepository) {
setRepository(organizationRepository);
}
}
范型注入的服务
// 抽象服务类
public abstract class BaseService<M extends Serializable> {
// 这里发生了范型注入!!!!!!!
@Autowired
protected BaseRepository<M> repository;
public void save(M m) {
repository.save(m);
}
}
// 具体的用户服务类
@Service
public class UserService extends BaseService<User> {
}
// 具体的组织服务类
@Service
public class OrganizationService extends BaseService<Organization> {
}