解决Spring3.4版本中使用QueryDSL中出现MongoAnnotationProcessor使用问题
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中进行配置
按照上面的配置即可~