我写了一个基于Spring Boot的应用程序,但是当我将所有类(使用@restController注释的模型,控制器)放在SpringBoot所在的同一个包中时,它可以工作。 我的问题是为什么这些类必须在同一个包中?
这是Spring Boot App注释:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
} }
这是其他控制器:
@RestController
public class PersonController {
@RequestMapping("/Hello")
public String syaHello(@RequestParam(value = "name", defaultValue = "World") String name) {
return "Hello " + name;
} }
答案 0 :(得分:7)
因为这是@SpringBootApplication
注释的默认行为。更准确地说,组件扫描会检测包中的所有配置和组件以及带有注释的类的所有子包。如果您希望将类包含在其他包中,则可以在注释中将包作为属性指定为包或类:
@SpringBootApplication(scanBasePackageClasses = {OneClass.class, AnotherClass.class})
然后,Spring将扫描类OneClass和AnotherClass的包和子包。