Spring boot 自动装配

2020-12-28 13:27

阅读:676

标签:ram   cto   auto   main   cat   meta   conf   new   ons   

Spring boot 自动装配

在 Spring Boot 场景下,基于约定大于配置的原则,实现 Spring 组件自动装配的目的。其中使用了底层装配技术

底层装配技术

  • Spring 模式注解装配
  • Spring @Enable 模块装配
  • Spring 条件装配装配
  • Spring 工厂加载机制
    • 实现类: SpringFactoriesLoader
    • 配置资源: META-INF/spring.factories

实现方法

  1. 激活自动装配 - @EnableAutoConfiguration
  2. 实现自动装配 - XXXAutoConfiguration
  3. 配置自动装配实现 - META-INF/spring.factories

实现

  1. 启动类上使用@EnableAutoConfiguration激活自动装配
@EnableHelloWorld
public class EnableHelloWorldBootstrap {
    @Bean
    @ConditionalOnSystemProperty(name = "user.name", value = "MAIBENBEN")
    public String helloWorld() {
        return "Hello,World 小马哥";
    }
    public static void main(String[] args) {
        ConfigurableApplicationContext context = new SpringApplicationBuilder(EnableHelloWorldBootstrap.class)
                .web(WebApplicationType.NONE)
                .run(args);
        // helloWorld Bean 是否存在
        String helloWorld =
                context.getBean("helloWorld", String.class);
        System.out.println("helloWorld Bean : " + helloWorld);
        String helloWorld2020 =
            context.getBean("helloWorld2020", String.class);
        System.out.println("helloWorld Bean : " + helloWorld2020);
        // 关闭上下文
        context.close();
    }
}
  1. 实现自动装配类AutoConfiguration,自动装配类上可以使用模式装配,模块装配,条件装配
@Configuration // Spring 模式注解装配
@EnableHelloWorld // Spring @Enable 模块装配
@ConditionalOnSystemProperty(name = "user.name", value = "MAIBENBEN") // 条件装配
public class HelloWorldAutoConfiguration {
}
  1. 在resource目录下创建META-INF\spring.factories文件
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.imooc.diveinspringboot.configuration.HelloWorldAutoConfiguration

Spring boot 自动装配

标签:ram   cto   auto   main   cat   meta   conf   new   ons   

原文地址:https://www.cnblogs.com/fjf3997/p/13029163.html


评论


亲,登录后才可以留言!