在Spring中使用@Autowired直接连接到具体类而不是接口(并使用'by type'自动装配)是否有意义?
如果一个类没有实现接口,那么通过构造函数或工厂实例化它会更好(保持简单); 而不是仅仅为了它而使它成为一个Spring bean.
ska*_*man 17
在Spring中使用
@Autowired直接连接到具体类而不是接口是否有意义
当然.自动装配的做法是独立的东西你自动装配.它既适用于类,也适用于接口.
然而,这是否是一个好主意是值得商榷的,尽管这是一个更普遍的问题,你是否应该总是为给定的类引入一个接口,而不是直接与类类型对话.其优点包括更简单的单元测试和更简洁的设计,代价是代码混乱.
自动装配接口类型而不是类类型是另一个很好的理由,如果Spring需要在注入之前围绕bean生成代理对象,那么如果bean的类定义了任何接口,那么代理将实现这些接口,并且不与bean类本身类型兼容.如果您尝试按类类型自动装配该bean,它将失败.避免这种令人讨厌的情况的最简单方法是始终按接口类型自动装配,这样它将按照您的预期运行.
并利用'按类型'自动装配
如果您的意思是容器级byType自动装配,那么您不希望这样做.这是旧的Spring 1.x风格的自动装配,它非常不灵活(参见自动装配的限制).
坚持@Autowired下去,它更灵活,更容易控制.
如果一个类没有实现接口,那么通过构造函数或工厂实例化它会更好(保持简单); 而不是仅仅为了它而使它成为一个Spring bean.
这两个问题是完全分开的.如果你需要Spring来控制它的依赖关系和生命周期,那么对象应该是一个Spring bean,无论它是否实现了接口.如果您发现该对象没有依赖关系,并且没有有意义的接口,那么也许没有理由将它变成bean.
| 归档时间: |
|
| 查看次数: |
7604 次 |
| 最近记录: |