SpringBoot自动装配,实现自定义配置

本文基于约定大于配置原则,介绍Spring组件自动装配。阐述了装配依赖方式,包括模式注解、@Enable模块等;讲解底层装配技术,如模式注解装配、模块装配等;说明了实现方式,涵盖激活、实现和配置自动装配;还介绍了自定义自动装配的步骤。
定义

基于约定大于配置的原则,实现Spring组件自动装配的目的

装配的依赖(方式)

模式注解、@Enable模块、条件装配、工厂加载机制

激活自动化装配、实现自动化装配、配置自动装配实现

底层装配技术
  • Spring 模式注解装配
  • Spring @Enable模块装配
  • Spring条件装配
  • Spring工厂加载机制
    • 实现类: SpringFactoriesLoader
    • 配置资源:META-INF/spring.factories
实现方式
  1. 激活自动装配
    比如 使用@EnableAutoConfiguration
  2. 实现自动装配
    通过定义 ***AutoConfiguration注解
  3. 配置自动装配
    META-INF/spring.factories文件中进行配置
    # Auto Configure
    // 这里是配置自动装配的注解, 下面都是这个自动装配需要装配的东西,通过这种配置的方式,只要使用EnableAutoConfiguration注解,就会将下面的这些配置全部自动装配进去
    org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
    org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\
    org.springframework.boot.autoconfigure.aop.AopAutoConfiguration,\
    org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration,\
    org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration,\
    org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration,\
    org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration,\
    org.springframework.boot.autoconfigure.cloud.CloudServiceConnectorsAutoConfiguration,\
    org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration,\
    org.springframework.boot.autoconfigure.context.MessageSourceAutoConfiguration,\
    org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration,\
    org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration,\
    org.springframework.boot.autoconfigure.dao.PersistenceExceptionTranslationAutoConfiguration,\
    org.springframework.boot.autoconfigure.data.cassandra.CassandraDataAutoConfiguration,\
    org.springframework.boot.autoconfigure.data.cassandra.CassandraReactiveDataAutoConfiguration,\
    org.springframework.boot.autoconfigure.data.cassandra.CassandraReactiveRepositoriesAutoConfiguration,\
    org.springframework.boot.autoconfigure.data.cassandra.CassandraRepositoriesAutoConfiguration,\
    org.springframework.boot.autoconfigure.data.couchbase.CouchbaseDataAutoConfiguration,\
    
自定义自动装配
  1. 激活自动装配
//新建了一个启动类,使用这个注解
//这里我需要获取helloWorld的bean,所以我需要在将helloWorld的bean通过这个注解进行自动装配
@EnableAutoConfiguration
public class EnableAutoConfigurationBootStrap {

    public static void main(String[] args) {
        ConfigurableApplicationContext context = new SpringApplicationBuilder(EnableAutoConfigurationBootStrap.class)
                .web(WebApplicationType.NONE)
                .run(args);

        String helloWorld = context.getBean("helloWorld", String.class);
        System.out.println("helloWorld:" + helloWorld);
    }
}
  1. 实现自动装配
    新建了一个HelloWorldAutoConfiguration
@Configuration  // 模式注解装配
@EnableHelloWorldConfiguration  // @Enable模块装配,这个装配是会生成一个helloWorldBean的
@TestCondition(name = "user.name", value = "Administrator") // 条件装配
public class HelloWorldAutoConfiguration {
}

这里的执行顺序是:

  • 先通过条件装配,如果条件装配不成立就不会进行下一步的操作
  • 条件装配成立后,进入EnableHelloWorldConfiguration,使用@import导入了配置bean
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Import(HelloWorldConfiguration.class)
public @interface EnableHelloWorldConfiguration {
}

public class HelloWorldConfiguration {
    @Bean
    public String helloWorld() {
        return "hello World!";
    }
}
  • 这里其实到这一步已经可以将bean获取到了,不需要使用Configuration,只是为了说明也可以用这个方法生成bean
  1. 配置自动装配
    resources目录下新建META-INF文件夹,在下面新建spring.factories文件,在这里面进行配置,将EnableHelloWorldConfiguration绑定给@EnableAutoConfiguration
# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.imooc.study.configration.HelloWorldAutoConfiguration

通过上面的三个步骤就能实现简单的自动装配,SpringBoot的自动装配其实是基于SpringFramework的实现,在这个基础上添加了spring.factories

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值