当我移动@SpringBootApplication时,为什么Spring Autowire会失败?

时间:2016-05-02 17:29:38

标签: java spring spring-boot

我对Spring / Spring Boot完全不熟悉,所以我需要一些帮助。我没有注意到任何文档表明@SpringBootApplication@ComponentScan必须位于特定位置:

工作文件夹结构

Working folder structure

Working folder structure 2

无效

Not working folder structure

1 个答案:

答案 0 :(得分:2)

我认为你的Application类是典型的Spring Boot应用程序,如下所示:

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

SpringBootApplication只是一个组合注释:

// Others
@Configuration
@EnableAutoConfiguration
@ComponentScan
public @interface SpringBootApplication { .. }

没有明确基础包的ComponentScan将使用Application类的包作为其扫描的基础包。因此,当您将此类放在根包中时,组件扫描程序将扫描根包中及其下的任何带注释的类,您的应用程序将成功运行。

但是,当您将Application移动到app包时,同一个组件扫描程序将无法扫描hello包中的那些bean,而Spring将无法将某些bean连接在一起。< / p>

Spring Boot不需要任何特定的代码布局,但是,有一些最佳实践可以提供帮助。您可以在Spring Boot Documentation中了解这些最佳做法。