最近在研发一个监控平台系统,使用了springboot、maven等开源框架。项目结构为一个parent和两个model。
modelA的java包结构是:com.yd.pmp.aaa.xxx.xx
modelB的java包结构是:com.yd.pmp.bbb.xxx.xx
modelB将来要发布成一个jar包,modelA中会依赖modelB的jar包。在测试的时候发现,在modelA中启动时无法扫描到modelB中声明的那些component,在网上找了大半天资料都没有发现有相关的解决方案。后来隐隐约约想起学习springboot时有过说明,@ComponentScan扫描的时候,只扫描当前程序所在包结构(包含子包)中声明的组件。调整了modelA中启动程序所在的包位置,果然好使了!
modelA中启动程序类App.java(内含@ComponentScan注解)原来所在包的位置是:
com.yd.pmp.aaa.App.java
调整后所在包的位置是:
com.yd.pmp.App.java
这样在App.java启动后就可以扫描到modelB中所有声明的组件了
分享到:
相关推荐
在实际开发中,除了上述解决方法,还可以考虑使用其他策略,例如使用`@Import`注解导入特定的配置类,或者在主配置中显式声明Bean,以确保即使在自动扫描失败的情况下也能正常加载必要的组件。同时,持续关注Spring...
`@SpringBootApplication` 是一个组合注解,包含 `@Configuration`(表示当前类为配置类)、`@EnableAutoConfiguration`(开启自动配置)和 `@ComponentScan`(组件扫描)。通过 `@ComponentScan`,SpringBoot 会...
`@SpringBootApplication` 是 SpringBoot 的核心注解,它结合了 `@SpringBootConfiguration`(提供配置文件功能)、`@EnableAutoConfiguration`(开启自动配置)和 `@ComponentScan`(扫描组件)三个注解。...
该注解包含了`@Configuration`(表示这是一个配置类)、`@EnableAutoConfiguration`(开启自动配置)和`@ComponentScan`(扫描组件)。自动配置根据项目中的依赖来决定哪些配置应该生效,例如,如果项目中包含`...
其中,`MyApplication.java`通常位于项目的根目录,并且带有`@SpringBootApplication`注解,其他实体类、控制器、服务层、仓库层等按照业务逻辑划分在不同的包中。 #### 11. 如何理解Spring Boot中的Starters? ...
这个注解结合了`@Configuration`、`@EnableAutoConfiguration`和`@ComponentScan`三个注解的功能,用于声明这是一个 SpringBoot 应用,并开启自动配置和组件扫描。 3. **自动配置(Auto Configuration)** - ...
- **`@ComponentScan`**:扫描指定包及其子包中的组件。 ##### 2.3 Spring Boot 配置文件 - **Properties 配置文件**:使用 `key=value` 格式进行配置,适合简单的键值对配置。 - **YAML 配置文件**:Spring Boot ...