自动化配置
下面的注解是Spring Boot自动配置的基础,它们使得根据环境条件动态地配置和激活beans成为可能。只有了解了注解,才有机会弄懂三方包的运作原理,如cas登陆,权限控制等三方包都会基于自动化配置
两大基石
@Import
注解解释:
@Import
注解用于导入其他配置类,这些配置类中定义的beans将被注册到Spring上下文中。
示例:
@Configuration
@Import(RestConfiguration.class)
public class ApplicationConfig {
// RestConfiguration中定义的beans将被导入到Spring上下文
}
@Bean
注解解释:
@Bean
注解用于声明一个bean,方法返回的对象将被注册为Spring上下文中的bean。@Bean注解通常用在@Configuration注解的类中
示例:
@Configuration
public class AppConfig {
@Bean(name = "exampleBean")
public ExampleBean exampleBean() {
return new ExampleBean();
}
}
此注解确保某个配置仅在类路径上存在某些类时生效。
四大金刚
@ConditionalOnWebApplication
注解解释:
@ConditionalOnWebApplication
是一个条件注解,用于只在当前应用是Web应用时才使配置生效。它可以通过type
属性进一步区分应用是基于Servlet的Web应用还是响应式Web应用。
示例:
@Configuration
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET)
public class ServletWebApplicationConfig {
// 这里可以定义只有在Servlet类型的Web应用中才需要的beans
}
@ConditionalOnClass
注解解释:
@ConditionalOnClass
此注解确保某个配置仅在类路径上存在某些类时生效。根据类路径上是否存在指定的类(或类数组),来条件化地激活配置。
示例:
@Configuration
@ConditionalOnClass(BaspProxyController.class)
public class BaspConfig {
// 该配置仅在BaspProxyController类存在于类路径上时生效
}
此注解确保某个配置仅在类路径上存在某些类时生效。
@ConditionalOnBean
注解解释:
@ConditionalOnBean
根据Spring上下文中是否存在指定的bean(或bean数组),来条件化地激活配置。
示例:
@Configuration
@ConditionalOnBean({RestProvider.class, BaspProperties.class})
public class ConditionalServiceConfig {
// 该配置仅在RestProvider和BaspProperties这两个bean都已经存在于Spring上下文中时生效
}
此注解确保某个配置仅在Spring上下文中已经存在某些bean时生效。
@ConditionalOnMissingBean
注解解释:
@ConditionalOnWebApplication
根据Spring上下文中是否缺少指定的bean(或bean数组),来条件化地激活配置
示例:
@Configuration
@ConditionalOnMissingBean(name = "baspProxyController")
public class DefaultBaspProxyControllerConfig {
@Bean(name = "baspProxyController")
public BaspProxyController baspProxyController() {
// 这个bean仅在名为baspProxyController的bean不存在时才会创建
}
}
注解用于只有当Spring上下文中不存在指定的bean时,才使配置生效。这通常用于提供默认配置。。