Java 门面层之间存在依赖关系是常见的吗?
我的应用程序具有以下层: -门面 -业务对象 -存储库(Spring JPA数据) 让我们假设以下类:Java 门面层之间存在依赖关系是常见的吗?,java,spring,spring-mvc,Java,Spring,Spring Mvc,我的应用程序具有以下层: -门面 -业务对象 -存储库(Spring JPA数据) 让我们假设以下类: @Component public class MessageFacade implements MessageService { @Autowired private GarageBO garageBO; @Autowired private MessageBO messageBO; public void createFeedbackMessage(...) {
@Component
public class MessageFacade implements MessageService {
@Autowired
private GarageBO garageBO;
@Autowired
private MessageBO messageBO;
public void createFeedbackMessage(...) {
messageBO.createFeedbackMessage(...);
garageBO.createFeedback(...);
}
}
@Component
public class ServiceOrderFacade implements ServiceOrderService {
@Autowired
private ServiceOrderBO serviceOrderBO;
@Autowired
private MessageBO messageBO;
@Autowired
private GarageBO garageBO;
public void createServiceOrder(...) {
serviceOrderBO.createServiceOrder(...);
messageBO.createFeedbackMessage(...);
garageBO.createFeedback(...);
}
}
观察MessageFacade中的createFeedbackMessage方法,我有:1)MessageBO中的createFeedbackMessage方法它负责创建带有反馈调查链接的电子邮件
2)garageBO中的createFeedbackMessage方法创建带有问题和回答的反馈实体 在ServiceOrderFacade中的createServiceOrder方法上,我需要调用ServiceOrderBO的一个方法,之后我需要在MessageFacade中具有与createFeedbackMessage方法相同的行为 在ServiceOrderFacade->MessageFacade之间创建依赖关系是个坏主意吗 守则是:
@Component
public class ServiceOrderFacade implements ServiceOrderService {
@Autowired
private ServiceOrderBO serviceOrderBO;
@Autowired
private MessageBO messageBO;
@Autowired
private GarageBO garageBO;
public void createServiceOrder(...) {
serviceOrderBO.createServiceOrder(...);
getMessageService().createFeedbackMessage(...);
}
}
如果你认为你有问题。您可以创建另一个层,就像公共层一样,它是业务对象层的依赖项,将创建一次,并将在您的整个BO中使用(如果您愿意)另一个层有名称吗?我按照上面详述的方法解决了这个问题,但它非常难看,因为将来我可能会有一个循环依赖。我会听从你的建议,谢谢你的回复!这里我们称之为公共层。在这个层中,您可以集中您的存储库,甚至是外观层。我不明白你什么时候会有循环依赖?在我看来,这一层永远是一个永远不会依赖的模块,例如一个facade对不起,我表达错了。我的意思是,我按照我在自己的问题中的建议,使用:getMessageService().createFeedbackMessage(…);通过这种方式解决问题可以创建循环依赖关系。