我正在研究Spring Boot +Axon示例,并使用最新的依赖项。
Spring Boot +Axon
如果我曾经axon-core和axon- amqp版本,3.0-RC1然后正常工作。但是我使用3.4版本,然后在starup上出现以下错误。有任何快速帮助吗?
axon-core
axon- amqp
3.0-RC1
*************************** APPLICATION FAILED TO START *************************** Description: An attempt was made to call the method org.axonframework.eventsourcing.eventstore.jpa.JpaEventStorageEngine.<init>(Lorg/axonframework/common/jpa/EntityManagerProvider;)V but it does not exist. Its class, org.axonframework.eventsourcing.eventstore.jpa.JpaEventStorageEngine, is available from the following locations: jar:file:/C:/Users/user/.m2/repository/org/axonframework/axon-core/3.4/axon-core-3.4.jar!/org/axonframework/eventsourcing/eventstore/jpa/JpaEventStorageEngine.class It was loaded from the following location: file:/C:/Users/user/.m2/repository/org/axonframework/axon-core/3.4/axon-core-3.4.jar Action: Correct the classpath of your application so that it contains a single, compatible version of org.axonframework.eventsourcing.eventstore.jpa.JpaEventStorageEngine
pom.xml
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.6.RELEASE</version> <!-- <version>1.4.2.RELEASE</version> --> <relativePath /> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.axonframework</groupId> <artifactId>axon-spring-boot-starter</artifactId> <version>3.0-RC1</version> </dependency> <dependency> <groupId>org.axonframework</groupId> <artifactId>axon-amqp</artifactId> <!-- <version>3.0-RC1</version> --> <version>3.4</version> </dependency> <dependency> <groupId>org.axonframework</groupId> <artifactId>axon-core</artifactId> <!-- <version>3.0-RC1</version> --> <version>3.4</version> </dependency> <dependency> <groupId>org.hsqldb</groupId> <artifactId>hsqldb</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> --> </dependencies>
DemoComplaintsApplication.java
@SpringBootApplication public class DemoComplaintsApplication { public static void main(String[] args) { SpringApplication.run(DemoComplaintsApplication.class, args); } @RestController public static class ComplaintAPI { private final ComplaintQueryObjectRepository repostory; private final CommandGateway commandGateway; public ComplaintAPI(ComplaintQueryObjectRepository repostory, CommandGateway commandGateway) { this.repostory = repostory; this.commandGateway = commandGateway; } @PostMapping public CompletableFuture<String> fileCompplaint(@RequestBody Map<String, String> request) { String id = UUID.randomUUID().toString(); return commandGateway .send(new FileComplaintCommand(id, request.get("company"), request.get("description"))); } @GetMapping public List<ComplaintQueryObject> findAll() { return repostory.findAll(); } @GetMapping("/{id}") public ComplaintQueryObject find(@PathVariable String id) { //return repostory.findOne(id); return repostory.findById(id).get(); } } @Aggregate public static class Complaint { @AggregateIdentifier private String complaintId; public Complaint() { } @CommandHandler public Complaint(FileComplaintCommand command) { apply(new ComplaintFileEvent(command.getId(), command.getCompany(), command.getDescription())); } @EventSourcingHandler public void on(ComplaintFileEvent event) { this.complaintId = event.getId(); } } @Component public static class ComplaintQueryObjectUpdater { private final ComplaintQueryObjectRepository repository; public ComplaintQueryObjectUpdater(ComplaintQueryObjectRepository repository) { this.repository = repository; } @EventHandler public void on(ComplaintFileEvent event) { repository.save(new ComplaintQueryObject(event.getId(), event.getCompany(), event.getDescription())); } } public static class FileComplaintCommand { @TargetAggregateIdentifier private String id; private String company; private String description; public FileComplaintCommand(String id, String company, String description) { super(); this.id = id; this.company = company; this.description = description; } public String getId() { return id; } public String getCompany() { return company; } public String getDescription() { return description; } } }
这是问题所在:
<dependency> <groupId>org.axonframework</groupId> <artifactId>axon-spring-boot-starter</artifactId> <version>3.0-RC1</version> </dependency>
应该:
<dependency> <groupId>org.axonframework</groupId> <artifactId>axon-spring-boot-starter</artifactId> <version>3.4</version> </dependency>
因为您将轴突库升级到v3.4。