V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
louislivi
V2EX  ›  Java

不同包下 @Configuration 注解不生效?

  •  1
     
  •   louislivi · 2019-11-11 16:22:59 +08:00 · 6721 次点击
    这是一个创建于 1835 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 是这样的我本来是像开发一个关于数据源的一个扩展
    • 但是发现不同的包下@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 文件以及这段代码都仿了一遍但是 都没有正常注入完全不执行。
    6 条回复    2020-10-28 16:11:44 +08:00
    chendy
        1
    chendy  
       2019-11-11 16:36:30 +08:00   ❤️ 1
    1. `@ComponentScan({"*.*.*"})`真实狠人
    2. 建议了解一下 spring-boot 和 spring 的的相关机制
    3. 你少了一个 resources/META-INF/spring.factories
    muskill
        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/
    louislivi
        3
    louislivi  
    OP
       2019-11-11 17:02:28 +08:00
    @chendy
    @muskill

    非常感谢,懂了。
    qwerthhusn
        4
    qwerthhusn  
       2019-11-11 17:10:01 +08:00
    你看那个 jar 包下面的 META-INF 目录下是不是有个 spring.factories 文件
    waterlaw
        5
    waterlaw  
       2019-12-08 05:48:05 +08:00 via Android
    回归源码, 可以解决 99% 的问题,剩下的 1%看经验。
    utoom
        6
    utoom  
       2020-10-28 16:11:44 +08:00
    @chendy 完全正解,+1
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2973 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 14:45 · PVG 22:45 · LAX 06:45 · JFK 09:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.