Spring-boot自动装配原理
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
。
评论已关闭