有两种服务:
BookService {
add(Book book);
...
}
和
MsgService {
add(String msg);
...
}
两个服务是独立的。现在我想要这个:
XService {
@Transactional
addBook(Book book) {
BookService bs;
MsgService ms;
bs.add(book);
ms.add("add a new book" + book);
}
}
在这个模式中,BookService和MsgService就像原子服务,使用Dao层做基本的CRUD操作,可能是事务性的,但不暴露给客户端;其中一个将是XService,它调用几个原子服务来完成单个事务功能(或者说完整的业务逻辑),如addBook()。
以下是我的问题:
1,这个图案可以吗?
2,如果有,XService应该在哪一层?X最好的名字是什么?
3、XService中的@Transactional工作吗?
模式很好,它通常被称为Facade。XService
类/逻辑应该保留在服务/业务层。至于名称,这取决于您,并取决于类实际在做什么。如。如果是注册一本书,调用RegistrationService。
至于@Transactional
,请确保您的类用@Service
或@Component
注释,并且它在Spring的component scanned
包中。如果您包装的服务也有@Transactional
方法,请确保事务传播或不传播,这同样取决于您的需要。