spring 无法访问自定义Sping Boot 启动程序中的REST端点

9rygscc1  于 2023-03-11  发布在  Spring
关注(0)|答案(1)|浏览(119)

我创建了一个自定义的Sping Boot 启动器,它使用@RestController注解提供了一些REST端点,启动器中还包含了一个带有spring.factories文件的emply配置类。然而,当我试图在另一个Spring Boot应用程序中使用该启动器时,无论是在使用MockMvc进行测试时,还是在运行外部工具(curl等)访问时,REST端点始终返回404
我可以知道是否可以分离REST端点吗?如果可以,我是否遗漏了什么?
第1版控制器类如下所示:

@RestController
@RequestMapping("/foo")
public class MyController {
    @GetMapping
    public String foo() {return "bar";}
}

配置类如下所示:

@Configuration
@ConditionalOnClass(MyController.class)
public class MyRestAutoConfiguration {

}

应用程序启动时正确加载了配置类。

yptwkmov

yptwkmov1#

除了AutoConfiguration之外,你还需要告诉Spring在哪里寻找bean类,所以在你的代码中,你应该把控制器描述成一个方法或者使用@ComponentScan注解:

@Configuration
@ConditionalOnClass(MyController.class)
@ComponentScan(basePackageClasses = {MyController.class})
public class MyRestAutoConfiguration {

}

@Configuration
@ConditionalOnClass(MyController.class)
public class MyRestAutoConfiguration {
    @Bean
    public MyController tradeMacAuthTokenService() {
        return new MyController();
    }
}

相关问题