spring boot更新到3.4版本后,Spring官方也是提供了AnnotationProcessor工具,可以不用使用maven-apt这个老旧的不行的依赖了。
但是按照官方教程会出现两个问题
1. maven找不到MongoAnnotationProcessor
如果你按照Spring Boot上的教程直接配置完成后,mvn compile时会报这个问题:
找不到批注处理程序 ‘org.springframework.data.mongodb.repository.support.MongoAnnotationProcessor’
要解决这个问题,你需要配置在 annotationProcessorPaths
中加入依赖
<annotationProcessorPaths><path><groupId>org.springframework.data</groupId><artifactId>spring-data-mongodb</artifactId></path>
</annotationProcessorPaths>
这样你的maven,就能正常找到你的 org.springframework.data.mongodb.repository.support.MongoAnnotationProcessor
然而还是有问题,maven会爆出下面这个问题
java.lang.NoClassDefFoundError: com/querydsl/apt/AbstractQuerydslProcessor: com.querydsl.apt.AbstractQuerydslProcessor
所以,还需要在annotationProcessorPaths加入 querydsl-apt
依赖
<annotationProcessorPaths><path><groupId>org.springframework.data</groupId><artifactId>spring-data-mongodb</artifactId></path><path><groupId>com.querydsl</groupId><artifactId>querydsl-apt</artifactId></path>
</annotationProcessorPaths>
这样你的maven编译就没有问题了。
完整版的配置如下
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>${maven-compiler-plugin.version}</version><configuration><source>${java.version}</source><target>${java.version}</target><encoding>UTF-8</encoding><annotationProcessorPaths><path><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></path><path><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId></path><path><groupId>org.springframework.data</groupId><artifactId>spring-data-mongodb</artifactId></path><path><groupId>com.querydsl</groupId><artifactId>querydsl-apt</artifactId></path></annotationProcessorPaths><annotationProcessors><annotationProcessor>org.springframework.data.mongodb.repository.support.MongoAnnotationProcessor</annotationProcessor></annotationProcessors><generatedTestSourcesDirectory>target/generated-test-sources</generatedTestSourcesDirectory><generatedSourcesDirectory>target/generated-sources</generatedSourcesDirectory></configuration>
</plugin>
2. Idea找不到MongoAnnotationProcessor
如果你用的是idea的话,你可能会发现你能正常编译,但是无法运行,运行或调试会报下面的问题
java: java.lang.ClassNotFoundException: org.springframework.data.mongodb.repository.support.MongoAnnotationProcessor
这里面需要在idea中进行配置
按照上面的配置即可~