在Micronaut中定义不可变配置时遭遇NoSuchBeanException异常
问题解决:Micronaut 接口式@ConfigurationProperties 找不到Bean
错误原因
使用接口配合@ConfigurationProperties定义配置时,Micronaut需要通过注解处理器自动生成该接口的实现类。当前pom.xml中缺少负责生成配置接口实现的micronaut-validation注解处理器依赖,导致容器无法找到对应Bean。
修复步骤
1. 更新pom.xml依赖与注解处理器
修改pom.xml,在依赖中添加micronaut-validation,同时在编译插件的注解处理器路径中加入该依赖:
添加依赖
<dependencies> <dependency> <groupId>io.micronaut</groupId> <artifactId>micronaut-inject-java</artifactId> </dependency> <!-- 新增配置接口实现所需依赖 --> <dependency> <groupId>io.micronaut</groupId> <artifactId>micronaut-validation</artifactId> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> </dependency> </dependencies>
更新注解处理器路径
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <annotationProcessorPaths> <path> <groupId>io.micronaut</groupId> <artifactId>micronaut-inject-java</artifactId> </path> <!-- 新增配置接口实现所需注解处理器 --> <path> <groupId>io.micronaut</groupId> <artifactId>micronaut-validation</artifactId> </path> </annotationProcessorPaths> </configuration> </plugin> <!-- 其他插件配置保持不变 --> </plugins> </build>
2. 重新编译项目
执行命令触发注解处理器生成接口实现类:
mvn clean compile
3. 运行验证
编译完成后启动应用,即可正常获取AppConfig Bean,配置值会自动从application.yml绑定,未配置字段将使用@Bindable指定的默认值。
补充说明
Micronaut 3.x版本中,接口形式的不可变配置必须依赖micronaut-validation模块的注解处理器生成实现类,仅靠micronaut-inject-java无法完成该类型Bean的生成。
内容的提问来源于stack exchange,提问作者Hari Krishna
相关产品推荐
相关产品推荐

