Spring-boot自动装配原理
warning:
这篇文章距离上次修改已过430天,其中的内容可能已经有所变动。
Spring Boot的自动装配是通过@EnableAutoConfiguration注解和@SpringBootApplication注解间接实现的,它们背后的核心机制是Spring Framework的依赖注入(DI)和条件注解。
@EnableAutoConfiguration:这个注解开启自动配置功能,它引入了AutoConfigurationImportSelector,它会扫描所有META-INF/spring.factories文件,并根据文件中定义的配置条件,自动配置对应的Bean。@SpringBootApplication:是一个组合注解,包含@EnableAutoConfiguration、@ComponentScan和@Configuration。@ComponentScan会扫描指定包下的所有标有@Component、@Service、@Repository等注解的类,并注册为Spring Bean。
以下是一个简单的例子,展示了如何自定义一个自动配置类:
@Configuration
@ConditionalOnClass(MyClass.class) // 仅当classpath中存在MyClass时,配置生效
@EnableConfigurationProperties(MyProperties.class) // 启用配置属性绑定功能
public class MyAutoConfiguration {
@Autowired
private MyProperties properties;
@Bean
@ConditionalOnMissingBean // 仅当Spring容器中没有此Bean时,才创建
public MyBean myBean() {
MyBean myBean = new MyBean();
myBean.setProperty(properties.getProperty());
return myBean;
}
}在resources/META-INF/spring.factories中添加以下内容来启用自定义配置:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.example.project.MyAutoConfiguration这样,只要类路径上有MyClass类,并且没有用户提供自己的MyBean定义,Spring Boot应用启动时就会自动配置MyAutoConfiguration中定义的myBean。
评论已关闭