默认情况下 Spring Boot 在启动时, 只会扫描启动类对应的包以及子包进行装配.
例如, 通过 com.x.y.z 下面 Application.java
启动以后, 只会对 com.x.y.z** 包里面内容进行装配. 如果想要使用依赖 jar 包里面controller 等组件, 则需要添加component-scan
路径.
<context:component-scan base-package="org.example"/>
然而, 发现在依赖 Spring cloud config server 的时候, 并没有添加组件扫描, 结果 jar 包中的 controller 一样能够使用.
分析了一下, 原来在启动类上, 添加了 @EnableConfigServer
注解以后, 此注解里面有个 @Import
注解, 会将一些Configuration
类引进来, Configuration 类中通过 @Bean
注解的方法创建 config server 需要使用的类, 其中包括 Controller 类.
这样在没有手工添加 component-scan
的情况下, 只需要在启动类上添加注解, 一样能够使用 jar 包里的组件.