ComponentScan无法映射RestControllers

时间:2018-04-30 15:06:50

标签: java spring-boot

My Spring应用程序未映射@RestController。在我看来它是一个ComponentScan问题。我有两个项目(数据库和API应用程序),我正在扫描这两个项目(我试过basePackagesvalue)。 但仍然无法正常工作。

申请类:

//@ComponentScan({"project.name.db", "project.name"})
@ComponentScan(basePackages = "project.name")
@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

控制器:

@RestController
@ResponseStatus(HttpStatus.OK)
public class PersonController {

    @Autowired
    private PersonService personService;

    @RequestMapping("/person")
    public List<Person> getPerson(@RequestParam int someId) throws Exception {
      return this.personService.getPerson(someId);
    }
}

当Spring加载时,输出不包含此/person地图。 它能是什么?

更新项目结构

project.name.db

  • 模型

  • 存储库

project.name

  • MyApplication.java

  • 控制器

  • 服务

斜体文本是包。

2 个答案:

答案 0 :(得分:0)

有选项:

@SpringBootApplication(scanBasePackages = "your.toplevel.package")

@SpringBootApplication(scanBasePackageClasses= {PersonController.class})

答案 1 :(得分:0)

删除

@ComponentScan(basePackages = "project.name")

如果您的主要类(即@ComponentScan)位于根包中,则您不需要MyApplication。 Spring启动会自动扫描那些。