
@Configuration等注解无法生效,后查询得知是扫包问题在 Application 文件中添加@ComponentScan({"*.*.*"}) 就可以了,但是我发现druid 等公共依赖都没有这样为什么它们却可以正常运行呢? @Configuration @ConditionalOnClass(DruidDataSource.class) @AutoConfigureBefore(DataSourceAutoConfiguration.class) @EnableConfigurationProperties({DruidStatProperties.class, DataSourceProperties.class}) @Import({DruidSpringAopConfiguration.class, DruidStatViewServletConfiguration.class, DruidWebStatFilterConfiguration.class, DruidFilterConfiguration.class}) public class DruidDataSourceAutoConfigure { private static final Logger LOGGER = LoggerFactory.getLogger(DruidDataSourceAutoConfigure.class); @Bean(initMethod = "init") @ConditionalOnMissingBean public DataSource dataSource() { LOGGER.info("Init DruidDataSource"); return new DruidDataSourceWrapper(); } } 1 chendy 2019-11-11 16:36:30 +08:00 1. `@ComponentScan({"*.*.*"})`真实狠人 2. 建议了解一下 spring-boot 和 spring 的的相关机制 3. 你少了一个 resources/META-INF/spring.factories |
2 muskill 2019-11-11 16:42:07 +08:00 一楼说的是,在 resources/META-INF/下面建个文件名和后缀名为 spring.factories 的文件,然后把详细的类的引用地址复制上去就行了,多行引用用英文逗号: ' ,\ ' 分开就好了,具体的加载原理可以看这里 => https://qidawu.github.io/2019/01/20/spring-factories/ |
4 qwerthhusn 2019-11-11 17:10:01 +08:00 你看那个 jar 包下面的 META-INF 目录下是不是有个 spring.factories 文件 |
5 waterlaw 2019-12-08 05:48:05 +08:00 via Android 回归源码, 可以解决 99% 的问题,剩下的 1%看经验。 |