Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SpringBoot-将Bean注册为Rest控制器_Java_Spring_Spring Boot_Spring Mvc_Spring Autoconfiguration - Fatal编程技术网

Java SpringBoot-将Bean注册为Rest控制器

Java SpringBoot-将Bean注册为Rest控制器,java,spring,spring-boot,spring-mvc,spring-autoconfiguration,Java,Spring,Spring Boot,Spring Mvc,Spring Autoconfiguration,我正在使用SpringBoot自动配置来注册bean。需要找到一种方法,通过它我可以将通过自动配置配置的bean注册为Rest控制器 SampleController.java 公共类采样控制器 { @GetMapping(“/sample path”) 公共字符串sampleMethod() { 返回“样本字符串”; } } SampleControllerAutoConfiguration.java @配置 @ConditionalOnProperty(value=“some.proper

我正在使用SpringBoot自动配置来注册bean。需要找到一种方法,通过它我可以将通过自动配置配置的bean注册为Rest控制器

SampleController.java

公共类采样控制器
{
@GetMapping(“/sample path”)
公共字符串sampleMethod()
{
返回“样本字符串”;
}
}
SampleControllerAutoConfiguration.java

@配置
@ConditionalOnProperty(value=“some.property”,havingValue=“true”)//使用此属性,父应用程序可以选择或不选择控制器端点
公共类SampleControllerAutoConfiguration
{
//需要将此bean注册为控制器
@豆子
@条件性缺豆
公共SampleController SampleController()
{
返回新的SampleController();
}
}

我不能用
@RestController
注释
SampleController
,因为它与导入它的父项目在同一个包中,因此get由于组件扫描而自动配置

我回答了,但后来重新阅读了问题,意识到你说你不能执行我的建议。但后来我问自己为什么需要创建TestController?您是否试图模拟控制器进行测试?@robvans很抱歉造成混淆。我重新命名了控制器。该项目遵循Spring Boot项目中的“项目”、“项目启动者”模式。在一个理想的场景中,这个项目和导入它的项目将在不同的包中,允许我用“RestController”注释“SampleController”,并在自动配置中将其注册为Bean将使其可用。问题是将此项目与具有相同包名的项目一起使用。注释“SampleController”会自动注册它,这是我想要避免的,也许这有帮助?问题是,因为SampleController在同一个包中,所以在自动配置发生之前,用“RestController”注释它就会创建bean。停止此操作的一种方法是删除RestController注释,并通过自动配置方法对其进行配置。但是,我们如何以编程方式将bean注册为RestController,因为否则它只是作为普通对象创建的。它的映射不获取registeredad
@RestController
,并通过在
@ComponentScan
上指定排除来将其从组件扫描中排除。另一个选项是将
@RequestMapping
添加到类中。它将被检测到,但它还需要请求处理方法上的
@ResponseBody
。但是,为什么不简单地将
@conditionalnproperty
添加到控制器中,而不是自动配置?