【问题标题】:java spring: assemble other independent services into a single servicejava spring:将其他独立的服务组装成一个服务
【发布时间】:2013-03-25 03:59:40
【问题描述】:

有两种服务:

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 有效吗?

【问题讨论】:

    标签: java spring design-patterns transactions spring-transactions


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢,看来正是我想要的,我试试看。
    猜你喜欢
    • 1970-01-01
    • 2017-05-28
    • 1970-01-01
    • 2011-08-23
    • 1970-01-01
    • 1970-01-01
    • 2011-04-09
    • 2015-05-27
    • 1970-01-01
    相关资源
    最近更新 更多