@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
1. `@ComponentScan({"*.*.*"})`真实狠人
2. 建议了解一下 spring-boot 和 spring 的的相关机制 3. 你少了一个 resources/META-INF/spring.factories |
2
muskill 2019-11-11 16:42:07 +08:00 1
一楼说的是,在 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%看经验。
|