展示了如何使用两种不同的代码路径实现 CQRS:
- 命令部分通过Spring Data JPA 实现
- 通过jOOQ的查询部分
在同一个项目中创建另一个带注释@SpringBootApplication的类:
@SpringBootApplication |
- Operation以某种方式生成随机
- 从参数中获取调用次数
- 调用主 Web 应用程序的 URL
- 两个应用程序共享相同的 Maven POM。由于 位于spring-boot-starter-web类路径上,因此生成器应用程序会尝试启动 Tomcat。它失败是因为第一个应用程序确实绑定了默认端口。
- Spring Boot 默认依赖组件扫描。因此,Web 应用程序扫描生成器应用程序及其声明的 bean 并创建它们。可以通过这种方式重新定义一些 bean。但是,webapp 也会创建CommandLineRunner上面的bean。因此,当它的服务器还没有准备好时,它“向自己发布”。
为了防止类路径扫描,我们将每个应用程序类移动到它的包中。请注意,当包具有父子关系时它不起作用:它们必须是兄弟姐妹。
要创建特定类的 bean,我们需要根据它们的性质依赖特定的注释:
- 对于 JPA 实体,@EntityScan, 指向要扫描的包
- 对于 JPA 存储库,@EnableJpaRepositories, 指向要扫描的包
- 对于其他类,@Import指向要从中生成 bean 的类
@SpringBootApplication |
- 扫描 JPA 存储库
- 扫描 JPA 实体
- 阻止 Web 服务器启动