2

2つのサービスがあります:

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

MsgService {
    add(String msg);
    ...
}

2つのサービスは独立しています。今私はこれが欲しい:

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は機能しますか?

4

1 に答える 1

1

パターンは細かく、一般的にファサードとして知られています。XServiceクラス/ロジックはサービス/ビジネスレイヤーに残る必要があります。名前に関しては、それはあなた次第であり、クラスが実際に何をしているかによって異なります。例えば。書籍を登録している場合は、RegistrationServiceと呼びます。

については、クラスにまたはの@Transactional注釈が付けられていること、およびSpringによるパッケージに含まれていることを確認してください。ラップするサービスにもメソッドがある場合は、必要に応じて、トランザクションが伝播するかしないかを確認してください。@Service@Componentcomponent scanned@Transactional

于 2013-03-25T13:35:43.713 に答える