Java spring:将其他独立服务组装为单个服务



有两种服务:

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方法,请确保事务传播或不传播,这同样取决于您的需要。

最新更新