记录spring-boot autoconfigure 机制使用经验

看spring-boot相关代码发现,很多地方都使用了名为“autoconfigure”的jar包。

autoconfigure 即“自动配置”的意思,也就是说它会根据项目引用的jar包、参数配置等,自动生成相应的Bean。

如常用的 spring-boot-autoconfigure 组件,看源码发现其中包含了几乎所有常用的第三方组件,如:jdbc,mongo,redis,kafka 等等。

 

使用 autoconfigure 

示例1:

@Configuration
class MyAutoConfiguration { // 类不能使用private、final修饰符


    @Bean
    @ConditionalOnClass(A.class)
    public A a() {
        A a = new A();
        return a;
    }

    @Bean
    @ConditionalOnClass(B.class)
    public B b() {
        return new B();
    }
}

示例2:

@Configuration
class MyAutoConfiguration { // 类不能使用private、final修饰符


    @Configuration
    @ConditionalOnClass(A.class)  // 当A类存在时加载
    public static class AConfigure {
        @Bean
        public A a() {
            A a = new A();
            return a;
        }
    }

    @Configuration
    @ConditionalOnClass(B.class)  // 当B类存在时加载
    public static class BConfigure {
        @Bean
        public B a() {
            B b = new B();
            return b;
        }
    }
}

 

说明:

1.在使用@ConditionalOnClass 时需要注意, 同一个类中必须所有的类都存在,否则会报“类未定义”异常。

如:示例1中,如果B类不存在,则加载时会报如下异常,此时可参考示例2,放在不同类中。

Caused by: java.lang.NoClassDefFoundError: B

2.spring.factories 该文件的作用界限还不清楚,不添加该文件也可以实现autoconfigure

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值