探索Spring Boot的自动配置机制
package com.example.myapplication;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@ConditionalOnClass(MyService.class) // 仅当MyService类位于类路径上时,该配置才会生效
public class MyAutoConfiguration {
@Bean
@ConditionalOnMissingBean(MyService.class) // 仅当没有用户自定义的MyService Bean时,才会创建默认的MyService Bean
public MyService myService() {
return new MyService();
}
}
这段代码演示了如何创建自定义的Spring Boot配置类,并使用@ConditionalOnClass
注解来检查MyService
类是否存在于类路径上。如果存在,则会创建一个MyService
类型的Bean,但是只有在没有用户自定义的MyService
Bean时才会创建。这样的配置可以确保Spring Boot的自动配置不会覆盖用户自定义的配置。
评论已关闭