2

有两种服务:

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 就像 atom 服务,使用 Dao 层进行基本的 CRUD 操作,可能是事务性的,但不会暴露给客户端;其中一个是 XService,它调用多个原子服务来完成单个事务功能(或说完整的业务逻辑),例如 addBook()。

这是我的问题:

1、这个图案可以吗?

2、如果有,XService应该在哪一层?X 最好的名字是什么?

3、XService中的@Transactional是否有效?

4

1 回答 1

1

图案很好,它通常被称为 Facade。类XService/逻辑应该保留在服务/业务层中。至于名称,这取决于您,并且取决于班级实际在做什么。例如。如果它正在注册一本书,则将其称为 RegistrationService。

至于@Transactional,请确保您的类使用@Serviceor注释,@Component并且它位于component scannedSpring 的包中。如果您包装的服务也有@Transactional方法,请确保事务传播或不传播,这再次取决于您的需要。

于 2013-03-25T13:35:43.713 回答