SpringBoot底层注解详解

 更新时间:2023年05月15日 09:29:38   作者:无敌的佐菲zzz  
这篇文章主要介绍了SpringBoot底层注解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

一、 @Configuration

我们先来看看,以前我们用spring是怎么配置bean的属性值:

虽然不算多,但是如果每一个bean都这样配置,属实不容易。这个时候我们的@Configuration来了,看他是怎么进行配置bean的:

直接在类上加上@Configuration注解,告诉SpringBoot,我们Myconfig是个配置类哈!然后我们只需要创建方法返回一个对象,再在方法上添加@Bean注解将它交给容器来注册。如果我们以后要获取Bean对象,只需要调用这个方法就行了,不过需要注意的是它默认的就是单例的,这和spring一样,如果我们想要它成为多例需要设置一下@Configuration注解里面的proxyBeanMethods属性,因此我们引出了FULL和LITE模式。

Full模式和Lite模式

Full模式是指proxyBeanMethods = true,开启代理bean的方法。此时调用配置类中每一个给而容器注册组件方法,都会从容器中找组件,保持单例模式。它保证了每个@Bean方法无论被调用多少次,返回的组件都是单例的。

Lite模式是指proxyBeanMethods = false,关闭代理bean的方法。容器中不会保存代理对象,每一次调用配置类里面的方法,·都会产生一个新的对象。这可以解决组件依赖的问题。它保证了每个@Bean方法调用多少次返回的组件都是新创建的。

那么我们应该思考什么时候用Full模式什么时候用Lite模式?

二、@Import 导入组件

我们先看一下这个注解的内部结构。

三、@Conditional

条件装配注解:满足我们Conditional指定的条件,就进行组件注入,不然不进行组件注入。

我们发现它的子注解还是相对比较多的,我们挑几个常见的注解来说一下:

案例:

这里我们故意将这个@Bean("tom")注释掉,但是我们依然保留user01(),我们看看我们的容器中有没有包含user01这个组件:

false,很遗憾,因为”tom“,user01也无法被注册了。

四、@ImportResource

这个注解是用来导入spring配置文件的

五、@ConfigurationProperties

这个注解是用来进行配置绑定的。

我们有两种方法:
方法一:@Component+@ConfigurationProperties组合使用

我们在核心配置文件applicantion.properties中配置前缀为mycar的值

我们看一下网页上这个car的属性是什么?

与我们在核心配置文件配置的值相同。

方法二:@EnableConfigurationProperties+@ConfigurationProperties组合使用

@EnableConfigurationPropertise:开启组件属性配置功能,并把这个组件自动注册到容器中。

需要注意的是: @ConfigurationProperties不会像Spring容器注入相关处理类,只是起到相关标记作用,相关处理逻辑还是由@EnableConfigurationPropertise导入处理类来完成。仅仅被标记EnableConfigurationPropertise注解的类,默认情况下也不会注册为Bean。

以上就是SpringBoot底层注解详解的详细内容,更多关于SpringBoot底层注解的资料请关注脚本之家其它相关文章!

以上就是SpringBoot底层注解详解的详细内容,更多关于SpringBoot底层注解的资料请关注脚本之家其它相关文章!

相关文章

  • Java并发之搞懂读写锁

    Java并发之搞懂读写锁

    这篇文章主要介绍了Java并发之读写锁,文中相关实例代码详细,测试可用,具有一定参考价值,需要的朋友可以了解下,希望能够给你带来帮助
    2021-11-11
  • 详解在Spring Boot框架下使用WebSocket实现消息推送

    详解在Spring Boot框架下使用WebSocket实现消息推送

    这篇文章主要介绍了详解在Spring Boot框架下使用WebSocket实现消息推送,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2016-12-12
  • SpringBoot ApplicationContext接口深入分析

    SpringBoot ApplicationContext接口深入分析

    ApplicationContext是Spring应用程序中的中央接口,由于继承了多个组件,使得ApplicationContext拥有了许多Spring的核心功能,如获取bean组件,注册监听事件,加载资源文件等
    2022-11-11
  • Java返回可变引用对象问题整理

    Java返回可变引用对象问题整理

    在本篇文章里小编给大家分享的是关于Java返回可变引用对象问题整理内容,需要的朋友们可以学习下。
    2020-04-04
  • log4j如何根据变量动态生成文件名

    log4j如何根据变量动态生成文件名

    这篇文章主要介绍了log4j如何根据变量动态生成文件名方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Java redisTemplate阻塞式处理消息队列

    Java redisTemplate阻塞式处理消息队列

    用redis中的List可以实现队列,这样可以用来做消息处理和任务调度的队列。因此,本文将主要为大家介绍如何利用redisTemplate处理消息队列,感兴趣的小伙伴可以了解一下
    2021-12-12
  • 一文带你搞懂Java中的数据流处理

    一文带你搞懂Java中的数据流处理

    这篇文章主要为大家详细介绍了Java中数据流处理的相关知识,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以跟随小编一起学习一下
    2024-02-02
  • java实现折半排序算法

    java实现折半排序算法

    折半插入排序法,又称二分插入排序法,是直接插入排序法的改良版,也需要执行i-1趟插入,不同之处在于,第i趟插入,先找出第i+1个元素应该插入的的位置,假定前i个数据是已经处于有序状态。
    2015-04-04
  • @MapperScan注解与@Mapper注解的使用

    @MapperScan注解与@Mapper注解的使用

    这篇文章主要介绍了@MapperScan注解与@Mapper注解的使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • maven解决依赖冲突的三种解决方法

    maven解决依赖冲突的三种解决方法

    依赖冲突是指项目依赖的某一个jar包,有多个不同的版本,因而造成了包版本冲突,本文主要介绍了maven解决依赖冲突的三种解决方法,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03

最新评论