Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaSpring:将其他独立服务组装成单个服务_Java_Spring_Design Patterns_Transactions_Spring Transactions - Fatal编程技术网

JavaSpring:将其他独立服务组装成单个服务

JavaSpring:将其他独立服务组装成单个服务,java,spring,design-patterns,transactions,spring-transactions,Java,Spring,Design Patterns,Transactions,Spring Transactions,有两种服务: BookService { add(Book book); ... } 及 这两项服务是独立的。现在我想要这个: XService { @Transactional addBook(Book book) { BookService bs; MsgService ms; bs.add(book); ms.add("add a new book" + book); } } 在这种

有两种服务:

BookService {
    add(Book book);
    ...
}

这两项服务是独立的。现在我想要这个:

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,它调用多个atom服务来完成单个事务功能(或者说是完整的业务逻辑),比如addBook()

以下是我的问题:

1、这种式样可以吗

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


3、XService中的@Transactional有效吗?

模式很好,很好。
XService
类/逻辑应该保留在服务/业务层中。至于名称,这取决于您自己,取决于类实际在做什么。如果它正在注册一本书,就称之为注册服务


至于
@Transactional
,请确保您的类带有
@Service
@Component
注释,并且它位于一个包中,由Spring扫描
组件。如果您包装的服务也有
@Transactional
方法,请确保事务可以传播,也可以不传播,这取决于您的需要。

非常感谢,这似乎正是我想要的,我会尝试一下。
XService {
    @Transactional
    addBook(Book book) {
        BookService bs;
        MsgService ms;
        bs.add(book);
        ms.add("add a new book" + book);
    }
}