假设我有 2 个服务类:
UserService
ProductService
如果在我的 ProductService 类中注入(inject) UserService 是错误的吗?
public class ProductserviceImpl implements ProductService {
@Autowired
UserService userService;
@Override
public void someThing() {
..
userService.otherThing(..);
..
}
}
我知道作为替代方案我可以创建另一个同时注入(inject) UserService 和 ProductService 的类,但是为此类命名非常棘手 :) 是否有这些类型的名称SOA 世界中的类?
最佳答案
1) 如果在我的 ProductService 类中注入(inject) UserService 是错误的吗?
这本身没有任何问题,但有以下注意事项:
- 请注意,您可能会朝着一个类做太多事情的方向前进(这里是 ProductService)
- 注意不要引入循环依赖(你不应该让 UserService 也依赖于 ProductService)
- 通过将您的依赖项连接到接口(interface)而不是具体类来限制紧耦合(这里您自动连接 UserService 而不是 UserServiceImpl,这很好)
2) 是否有此类类的名称(同时注入(inject) UserService 和 ProductService)?
是的,如前所述,自 Mediator Pattern 以来,您可以将此类称为中介者似乎是在形容这个。
您可以同时拥有低级服务和高级服务,将低级服务(ProductService、UserService)注入(inject)到高级服务(例如,PurchaseOrderService 或 PurchaseOrderMediator)中。或者,对于这种特殊情况,您可能会将产品服务视为依赖于 UserService 的单个高级服务。那时更多的是关于哪个构造更多cohesive在您的业务逻辑和应用程序的上下文中。
关于java - 避免服务类之间的紧耦合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12943116/