不同包下 @Configuration 注解不生效?
- 是这样的我本来是像开发一个关于数据源的一个扩展
-
但是发现不同的包下
@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();
}
}
- 我将 druid 的 pom 文件以及这段代码都仿了一遍但是 都没有正常注入完全不执行。
答:一楼说的是,在 resources/META-INF/下面建个文件名和后缀名为 spring.factories 的文件,然后把详细的类的引用地址复制上去就行了,多行引用用英文逗号: ' ,\ ' 分开就好了,具体的加载原理可以看这里 => https://qidawu.github.io/2019/01/20/spring-factories/
答:你看那个 jar 包下面的 META-INF 目录下是不是有个 spring.factories 文件
答:回归源码, 可以解决 99% 的问题,剩下的 1%看经验。
0条评论