Spring4新特性——泛型限定式依赖注入

今天药忘吃喽~ 2023-10-10 18:54 59阅读 0赞

Spring4**新特性——泛型限定式依赖注入**

Spring 4.0已经发布RELEASE版本,不仅支持Java8,而且向下兼容到JavaSE6/JavaEE6,并移出了相关废

弃类,新添加如Java8的支持、Groovy式Bean定义DSL、对核心容器进行增强、对Web框架的增强、

Websocket模块的实现、测试的增强等。其中两个我一直想要的增强就是:支持泛型依赖注入、对cglib

类代理不再要求必须有空参构造器了。

1**、相关代码:**

1.1**、实体**

1.2****Repository

对于Repository,我们一般是这样实现的:首先写一个模板父类,把通用的crud等代码放在

BaseRepository;然后子类继承后,只需要添加额外的实现。

1.3****Service

public class User implements Serializable {

private Long id;

private String name;

}

public class Organization implements Serializable {

private Long id;

private String name;

}

public abstract class BaseRepository {

public void save(M m) {

System.out.println(“=====repository save:” + m);

}

}

@Repository

public class UserRepository extends BaseRepository {

}

@Repository

public class OrganizationRepository extends BaseRepository {

}1.3.1**、以前Service写法**

public abstract class BaseService {

private BaseRepository repository;

public void setRepository(BaseRepository repository) {

this.repository = repository;

}

public void save(M m) {

repository.save(m);

}

}

@Service

public class UserService extends BaseService {

@Autowired

public void setUserRepository(UserRepository userRepository) {

setRepository(userRepository);

}

}

@Service

public class OrganizationService extends BaseService {

@Autowired

public void setOrganizationRepository(OrganizationRepository

organizationRepository) {

setRepository(organizationRepository);

}

}

可以看到,以前必须再写一个setter方法,然后指定注入的具体类型,然后进行注入;

1.3.2**、泛型Service的写法**

public abstract class BaseService {

@Autowired

protected BaseRepository repository;

public void save(M m) {

repository.save(m);

}

}

@Service

public class UserService extends BaseService {

}

@Service

public class OrganizationService extends BaseService {

}

大家可以看到,现在的写法非常简洁。支持泛型式依赖注入。这个也是我之前非常想要的一个功能,这样对于那些基本的CRUD式代码,可以简化更多的代码。

如果大家用过Spring data jpa的话,以后注入的话也可以使用泛型限定式依赖注入 :

对于泛型依赖注入,最好使用setter注入,这样万一子类想变,比较容易切换。如果有多个实现时,子

类可以使用@Qualifier指定使用哪一个。

发表评论

表情:
评论列表 (有 0 条评论,59人围观)

还没有评论,来说两句吧...

相关阅读

    相关 依赖注入

    纸上得来终觉浅 关于泛型依赖注入,只明白它的思想,考虑了整个下午都不明确它所应用的场合,暂时把用法记下来,后面再学习整理。使用示例如下: public class

    相关 Spring--依赖注入

    spring 4.x以上版本才有 创建两个带泛型的类,并配置两者的依赖关系,对于继承这两个类的子类,如果泛型相同,则会继承这种依赖关系: ![watermark_type