Spring boot 自动装配
Posted fjf3997
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring boot 自动装配相关的知识,希望对你有一定的参考价值。
Spring boot 自动装配
在 Spring Boot 场景下,基于约定大于配置的原则,实现 Spring 组件自动装配的目的。其中使用了底层装配技术
底层装配技术
- Spring 模式注解装配
- Spring @Enable 模块装配
- Spring 条件装配装配
- Spring 工厂加载机制
- 实现类: SpringFactoriesLoader
- 配置资源: META-INF/spring.factories
实现方法
- 激活自动装配 - @EnableAutoConfiguration
- 实现自动装配 - XXXAutoConfiguration
- 配置自动装配实现 - META-INF/spring.factories
实现
- 启动类上使用@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();
}
}
- 实现自动装配类AutoConfiguration,自动装配类上可以使用模式装配,模块装配,条件装配
@Configuration // Spring 模式注解装配
@EnableHelloWorld // Spring @Enable 模块装配
@ConditionalOnSystemProperty(name = "user.name", value = "MAIBENBEN") // 条件装配
public class HelloWorldAutoConfiguration {
}
- 在resource目录下创建META-INFspring.factories文件
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.imooc.diveinspringboot.configuration.HelloWorldAutoConfiguration
以上是关于Spring boot 自动装配的主要内容,如果未能解决你的问题,请参考以下文章
Spring-boot,无法自动装配类。未找到默认构造函数引发异常
Spring Boot 自动装配定义与自定义starter原理,及如何实现自定义装配
Spring Boot 自动装配定义与自定义starter原理,及如何实现自定义装配