Spring Boot 应用里面 jar 包中的 controller 等组件如何加载的

默认情况下 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 包里的组件.

猜你喜欢

转载自my.oschina.net/u/1169457/blog/1524560