Gradle多模块Micronaut项目IOrderRepository Bean注入失败求助
Micronaut Gradle多模块项目Bean依赖注入问题解决方案
检查Gradle模块依赖链路
确保项目的启动模块(通常是application模块)直接或间接依赖infrastructure模块。如果启动模块仅依赖core模块,infrastructure中的类不会被纳入编译和扫描范围。
在启动模块的build.gradle中添加依赖:implementation project(':infrastructure')同时确认infrastructure模块的
build.gradle已正确依赖core模块:implementation project(':core')配置Micronaut的Bean扫描范围
Micronaut默认仅扫描启动类(带@MicronautApplication注解的类)所在包及其子包,若infrastructure模块的包不在默认扫描范围内,需显式配置:- 在启动类上添加
@Scan注解指定扫描包:@MicronautApplication @Scan({"fete.bird.core", "fete.bird.infrastructure"}) public class Application { public static void main(String[] args) { Micronaut.run(Application.class, args); } } - 或在配置文件(
application.yml)中全局配置扫描包:micronaut: packages: - fete.bird.core - fete.bird.infrastructure
- 在启动类上添加
确认Bean注解与类继承正确性
- 确保
OrderRepository类上的@Singleton注解是Micronaut原生的io.micronaut.context.annotation.Singleton,而非其他框架的同名注解。 - 检查
OrderRepository是否正确实现IOrderRepository接口,包路径、类名拼写无错误。
- 确保
验证Introspected配置(可选)
若IOrderRepository使用了@Introspected,无需额外配置实现类,只要实现类被正确扫描为Bean即可。若存在特殊场景,可在接口上指定实现类:@Introspected(classes = OrderRepository.class) public interface IOrderRepository { // ... }
内容的提问来源于stack exchange,提问作者San Jaisy
相关产品推荐
相关产品推荐

