【SpringBoot 2】(四)详析SpringBoot的常用注解(一)

简介: 【SpringBoot 2】(四)详析SpringBoot的常用注解(一)

向容器注册组件@Bean

       在Spring中向容器中注册一个Bean使用的是applicationContext.xml配置文件中的bean标签,但是SpringBoot中使用的是MyConfig配置类中方法加@Bean注解。这两种方式得到的结果是一样的,只不过是两种不同的编码风格而已。


       单纯的写代码还不行,要想办法让容器知道你想要注册Bean,Spring使用的方法是在web.xml中声明applicationContext.xml配置文件使其中的配置生效,SpringBoot使用的是@Configuration注解向容器中注册,因为配置类其本身而言也是一个组件。


image.png


🚩配置类中使用的注解

@Configuration:向SpringBoot声明这是一个配置类,相当于web.xml里的配置文件声明

@Bean:向容器注册注解下面方法返回值对应的对象,相当于bean标签。@Bean注解还可以使用参数给对象命名,相当于bean标签中的id属性。默认命名为注解下面的方法名


🚩获取指定的组件

       run.getBean()方法

image.png

🚩容器中对象创建模式

       默认为单例模式,也就是在容器中创建好所有的对象,当外部需要获取对象的时候跳过创建步骤直接去容器中拿即可,所以说无论外部调用多少次组件注册方法获取的都是同一个对象。


       当然还可以修改属性proxyBeanMethods(Bean方法代理模式)的值进行单例多例的切换,属性值的改变导致SpringBoot底层拥有两种配置模式:


Full(全配置):proxyBeanMethods为true,单例,判断容器中有没有该对象,有则直接取无则创建

Lite(轻量配置):proxyBeanMethods为false,多例,对象直接创建。相较于全配置的先判断再创建或者获取,Lite直接创建节省了时间,所以被称为是轻量级配置。

       如果存在组件依赖的问题的话,必须采用全配置。所谓的组件依赖就是说在容器中一个组件中的属性是另一个组件或者说使用到了另一个组件,此时就称这个组件依赖于另一个组件。如果采用轻量配置的话,这个组件中的属性将不是另一个组件对象,虽然对象名称都一样但是地址不同。

image.png

注册组件的@Component

@Component:每一层都通用的注解,用于注册组件到容器中,相当于bean标签。缺点就是辨识度不高,无法通过注解理清楚这是哪一层的业务


@Controller:controller层的作用相当于@Component注解


@Service:service层实现类的作用相当于@Component注解


@Repository:mapper层实现类的作用相当于@Component注解


条件装配@Conditional

@Conditional:满足条件就向容器中注册组件

image.png



案例一@ConditionalOnBean:容器中的组件之间存在组件依赖,当被依赖的组件不存在的时候,不向容器中添加另一个组件


image.png


⚠  如果将这个注解放在类上的话, 即是满足条件时类中的所有方法才能生效,否则都不生效。

image.png

⚠  并且在类中的组件注册也是顺序的,使用条件装配注解时会因为注册写在后面就被判断为不满足条件

image.png

案例二@ConditionalOnMissingBean:没有组件时进行装配


相关文章
|
2月前
|
XML Java 数据格式
SpringBoot入门(8) - 开发中还有哪些常用注解
SpringBoot入门(8) - 开发中还有哪些常用注解
61 0
|
25天前
|
Java Spring
【Spring】方法注解@Bean,配置类扫描路径
@Bean方法注解,如何在同一个类下面定义多个Bean对象,配置扫描路径
165 73
|
20天前
|
Java Spring 容器
【SpringFramework】Spring IoC-基于注解的实现
本文主要记录基于Spring注解实现IoC容器和DI相关知识。
49 21
|
25天前
|
存储 Java Spring
【Spring】获取Bean对象需要哪些注解
@Conntroller,@Service,@Repository,@Component,@Configuration,关于Bean对象的五个常用注解
|
25天前
|
Java Spring
【Spring配置】idea编码格式导致注解汉字无法保存
问题一:对于同一个项目,我们在使用idea的过程中,使用汉字注解完后,再打开该项目,汉字变成乱码问题二:本来a项目中,汉字注解调试好了,没有乱码了,但是创建出来的新的项目,写的注解又成乱码了。
|
2月前
|
XML JSON Java
SpringBoot必须掌握的常用注解!
SpringBoot必须掌握的常用注解!
100 4
SpringBoot必须掌握的常用注解!
|
2月前
|
前端开发 Java Spring
Spring MVC核心:深入理解@RequestMapping注解
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的核心,它将HTTP请求映射到控制器的处理方法上。本文将深入探讨`@RequestMapping`注解的各个方面,包括其注解的使用方法、如何与Spring MVC的其他组件协同工作,以及在实际开发中的应用案例。
55 4
|
2月前
|
前端开发 Java 开发者
Spring MVC中的请求映射:@RequestMapping注解深度解析
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的关键,它将HTTP请求映射到相应的处理器方法上。本文将深入探讨`@RequestMapping`注解的工作原理、使用方法以及最佳实践,为开发者提供一份详尽的技术干货。
182 2
|
2月前
|
前端开发 Java Spring
探索Spring MVC:@Controller注解的全面解析
在Spring MVC框架中,`@Controller`注解是构建Web应用程序的基石之一。它不仅简化了控制器的定义,还提供了一种优雅的方式来处理HTTP请求。本文将全面解析`@Controller`注解,包括其定义、用法、以及在Spring MVC中的作用。
69 2
|
2月前
|
消息中间件 Java 数据库
解密Spring Boot:深入理解条件装配与条件注解
Spring Boot中的条件装配与条件注解提供了强大的工具,使得应用程序可以根据不同的条件动态装配Bean,从而实现灵活的配置和管理。通过合理使用这些条件注解,开发者可以根据实际需求动态调整应用的行为,提升代码的可维护性和可扩展性。希望本文能够帮助你深入理解Spring Boot中的条件装配与条件注解,在实际开发中更好地应用这些功能。
51 2