Chi*_* wu 10 java spring system-design
什么时候在春天使用服务或组件?
例如,负责将电子邮件或公共业务逻辑发送为"服务"或"组件"的模块是什么?有什么区别?
服务是否能够呼叫其他服务?有交易问题吗?或者服务应该只调用组件?
有人告诉我,服务永远不应该调用其他服务,而应该只调用组件,这意味着Controller-> Service-> Component-> DAO,但是我发现很多人分享了Controller-> Service-> DAO的概念.没有组件.
Spring中是否有关于此主题的系统设计标准?
Pel*_*cho 17
为了"配置"Spring以便它可以为您提供所需类的实例,您应该告诉Spring 涉及哪些对象以及如何构建它们.为此,您可以使用xml配置文件或通过注释
如果你采用注释方法(恕我直言更好,更简单),你可以@Component用来注释类.这就像告诉Spring:"嘿!我想让你知道你可能需要这个类的实例.也许是因为我要求它,也许是因为我要求的东西需要它".所以注释一个类@Component只是让Spring知道它存在
还有其他注释也是如此:
@Controller(和@RestController)@Service@Repository他们都告诉Spring,该课程涉及DI背景.但也有语义含义:
@Controller= @Component属于表示层@Service= @Component属于服务/用例层@Repository= @Component属于持久层您可以在此问题中找到更多信息
服务是否应该能够拨打其他服务?
我没有看到任何问题.如果您的任何服务需要执行已由其他人执行的某些操作,您肯定希望避免代码重复.只要您尊重架构层依赖(永不上升),您就可以了.
关于这一点,您可以查看有关Clean Architecture的文章
@Component对于其他刻板印象是通用的。
所以你可以替换
@Repository, @Service, @Controller 为@Component,什么都不会改变。但为了更好的可读性,你应该使用@Repository, @Service, @Controller
| 归档时间: |
|
| 查看次数: |
13000 次 |
| 最近记录: |