1. 常用注解
SpringBoot摒弃XML配置方式,改为全注解驱动
1. 组件注册
@Configuration、@SpringBootConfiguration
@Bean、@Scope
@Controller、 @Service、@Repository、@Component
@Import
@ComponentScan
步骤:
1、@Configuration 编写一个配置类
2、在配置类中,自定义方法给容器中注册组件。配合@Bean
3、或使用@Import 导入第三方的组件
2. 条件注解
如果注解指定的条件成立,则触发指定行为
@ConditionalOnXxx
@ConditionalOnClass:如果类路径中存在这个类,则触发指定行为
@ConditionalOnMissingClass:如果类路径中不存在这个类,则触发指定行为
@ConditionalOnBean:如果容器中存在这个Bean(组件),则触发指定行为
@ConditionalOnMissingBean:如果容器中不存在这个Bean(组件),则触发指定行为
场景:
- 如果存在
FastsqlException
这个类,给容器中放一个Cat
组件,名cat01, - 否则,就给容器中放一个
Dog
组件,名dog01 - 如果系统中有
dog01
这个组件,就给容器中放一个 User组件,名zhangsan - 否则,就放一个User,名叫lisi
@ConditionalOnBean(value=组件类型,name=组件名字):判断容器中是否有这个类型的组件,并且名字是指定的值
@ConditionalOnRepositoryType (org.springframework.boot.autoconfigure.data)
@ConditionalOnDefaultWebSecurity (org.springframework.boot.autoconfigure.security)
@ConditionalOnSingleCandidate (org.springframework.boot.autoconfigure.condition)
@ConditionalOnWebApplication (org.springframework.boot.autoconfigure.condition)
@ConditionalOnWarDeployment (org.springframework.boot.autoconfigure.condition)
@ConditionalOnJndi (org.springframework.boot.autoconfigure.condition)
@ConditionalOnResource (org.springframework.boot.autoconfigure.condition)
@ConditionalOnExpression (org.springframework.boot.autoconfigure.condition)
@ConditionalOnClass (org.springframework.boot.autoconfigure.condition)
@ConditionalOnEnabledResourceChain (org.springframework.boot.autoconfigure.web)
@ConditionalOnMissingClass (org.springframework.boot.autoconfigure.condition)
@ConditionalOnNotWebApplication (org.springframework.boot.autoconfigure.condition)
@ConditionalOnProperty (org.springframework.boot.autoconfigure.condition)
@ConditionalOnCloudPlatform (org.springframework.boot.autoconfigure.condition)
@ConditionalOnBean (org.springframework.boot.autoconfigure.condition)
@ConditionalOnMissingBean (org.springframework.boot.autoconfigure.condition)
@ConditionalOnMissingFilterBean (org.springframework.boot.autoconfigure.web.servlet)
@Profile (org.springframework.context.annotation)
@ConditionalOnInitializedRestarter (org.springframework.boot.devtools.restart)
@ConditionalOnGraphQlSchema (org.springframework.boot.autoconfigure.graphql)
@ConditionalOnJava (org.springframework.boot.autoconfigure.condition)
3. 属性绑定
@ConfigurationProperties: 声明组件的属性和配置文件哪些前缀开始项进行绑定
@EnableConfigurationProperties:快速注册注解:
- **场景:**SpringBoot默认只扫描自己主程序所在的包。如果导入第三方包,即使组件上标注了 @Component、@ConfigurationProperties 注解,也没用。因为组件都扫描不进来,此时使用这个注解就可以快速进行属性绑定并把组件注册进容器
将容器中任意组件(Bean)的属性值和配置文件的配置项的值进行绑定
- 1、给容器中注册组件(@Component、@Bean)
- 2、使用**@ConfigurationProperties 声明组件和配置文件的哪些配置项进行绑定**
这部分内容是对Spring Boot常用注解的概述,涵盖了组件注册、条件注解和属性绑定等核心概念。让我对各部分进行详细解读和补充说明,帮助理解每个注解的作用与使用场景。
- 组件注册
@Configuration 与 @SpringBootConfiguration
@Configuration 是用来标记一个类为配置类,在Spring中它的作用是定义一个配置类,通常用于定义Bean。
@SpringBootConfiguration 是 @Configuration 的一个特例,专门用于Spring Boot应用程序。它通常在Spring Boot的主应用程序类上标注,用于启动自动配置和组件扫描等。
@Bean 和 @Scope
@Bean 用于在配置类中注册一个Bean,它可以标记一个方法,Spring会调用该方法,并将返回值注册为容器中的Bean。
@Scope 用来定义Bean的作用域。默认是单例作用域(singleton),但可以通过设置为 prototype 或其他作用域来控制实例的创建方式。
@Controller, @Service, @Repository, @Component
这些是Spring的四个常用的组件注解:
@Controller:标记控制器类,用于处理HTTP请求。
@Service:标记服务类,通常用于业务逻辑。
@Repository:标记数据访问层,用于与数据库交互。
@Component:通用组件标识,Spring会自动扫描并注册。
@Import
用于导入其他配置类或组件,通常用于模块化管理,或者引用第三方库中定义的配置。
@ComponentScan
Spring会扫描指定包下的所有类,自动注册加了 @Component、@Service、@Repository 等注解的类。
2. 条件注解
条件注解用于根据一定条件决定是否激活某个Bean或组件的创建,这可以有效地减少不必要的组件加载,提高系统性能和灵活性。
**@ConditionalOnXxx