SpringBoot注解综合
SpringBoot注解综合
@Bean
注解通常会应用在一些配置类(由@Configuration注解描述)中,用于描述具备返回值的方法,然后系统底层会通过反射调用其方法,获取对象基于作用域将对象进行存储或应用。
@Bean 应用场景:第三方资源的整合及配置。
Spring容器中由@Bean描述的方法的返回值,对应的名字默认为方法名
@SpringBootApplication
是Sprnig Boot项目的核心注解,目的是开启自动配置
@SpringBootConfiguration
是来声明当前类是SpringBoot应用的配置类,项目中只能有一个。
一般我们无需自己添加。
@Component
是Spring中用于描述Bean类的一个注解。
用于告诉Spring这个类的实例由Spring创建,当此对象由Spring创建和管理时,默认会将对象存储到池(Bean池)中。
对象名字默认为类名,首字母小写.
@SpringBootTest
注解用于告诉spring框架,此测试类交给spring管理。
@Autowired
注解描述属性时,用于告诉spring框架要为此属性注入一个值.
由spring框架定义,用于描述类中属性或相关方法。Spring框架在项目运行时假如发现由他管理的Bean对象中有使用@Autowired注解描述的属性或方法,可以按照指定规则为属性赋值(DI)。
应用基本规则:
首先,要检测容器中是否有与属性或方法参数类型相匹配的对象,假如有并且只有一个则直接注入。
其次,假如检测到有多个类型都满足注入要求,还会按照@Autowired描述的属性或方法参数名查找是否有名字匹配的对象,,检测哪个bean名字与属性名相同,有则直接注入,没有则抛出异常。
最后,假如我们有明确要求,必须要注入类型为指定类型,名字为指定名字的对象还可以使用
@Qualifier
@Qualifier注解对其属性或参数进行描述(此注解必须配合@Autowired注解使用)。
用于指定将哪个bean的名字对应的对象注入给描述的属性
@Scope ("singleton/prototype")作用域
是Spring中用于定义Bean对象作用域的一个注解
常用的值有:
singleton(单例作用域): 整个内存有一份Bean实例,此实例何时创建与类的延迟加载特性配置有关,此实例创建以后,生命周期会由spring框架管理.
prototype(多例做哟用于): 每次获取都会创建新实例,此实例会在需要时创建与lazy特性无关,这个实例创建以后,不会交给spring管理,spring可以对其初始化,但不负责销毁.
spring容器中的bean没有使用@Scope注解描述时默认就是单例
@Lazy延迟加载
注解用于描述类,其目的是告诉spring框架此类支持延迟加载,通常会配合单例作用域使用.
@Lazy注解: 描述Spring管理的bean对象时,可以让bean延迟构建和初始化.
延迟加载(懒加载,按需加载)应用场景?
大对象(例如一些池对象),稀少用(例如容器初始化创建对象也用不到)
@Lazy(true) ----- true赋值给了value
默认value属性值为true,表示此对象要延迟构建及初始化
@Lazy(false) ----- false赋值给了value
假如要写false,和没有写@Lazy注解是一样的,表示不支持对象延迟构建及初始化
@PostConstruct生命周期方法 —— 初始化
注解用于描述bean对象生命周期方法中的初始化方法,此方法会在对象的构造方法之后执行.
在这样的方法中一般会为创建好的对象再此进行一些初始化.
@PerDestroy生命周期方法 —— 销毁
注解用于描述bean对象生命周期方法中的销毁方法,此方法会在在对象销毁之前执行(当作用域为prototype时,此方法不会执行)
在这样的方法中可以实现一些,资源销毁操作.
扩展:
SpringBoot 2.xx 工程下的测试类有什么特点? 1)包结构(启动类所在包或子包) 2)注解描述(@SpringBootTest)
SpringBoot 2.x 工程下的单元测试方法有什么特点? 1)单元测试方法使用@Test注解(org.junit.jupiter.api.Test)进行描述. 2)单元测试方法不能使用private访问修饰符 3)单元测试方法返回值只能是void类型 4)单元测试方法不允许写方法参数 5)单元测试方法允许抛出异常.
SpringBoot单元测试类中如何为属性进行值的注入? 1)单元测试类使用了@SpringBootTest注解描述 2)测试类中的属性使用Spring框架中的指定注解进行描述(例如@Autowired)
假设此对象为一个对象池
1)此对象要交给spring管理(SpringBoot工程下)
1.1)类的位置(必须放在启动类所在包以及子包)
1.2)类的描述(使用@Component注解)
2)需要此对象的地方可从spring的bean池中获取
思考:
1)如何判定一个对象在何时创建?
(日志,断点)
2)Spring容器中的Bean对象默认在启动时创建,但长时间又不使用这个对象,你觉得先把对象创建出来好吗?
(不好,占内存资源,由其是一些大对象)
3)Spring容器中的Bean对象假如不希望在容器启动时进行创建,该如何设计呢?
(延迟加载)
SpringBoot注解综合的更多相关文章
- springboot注解使用说明
springboot注解 @RestController和@RequestMapping注解 我们的Example类上使用的第一个注解是 @RestController .这被称为一个构造型(ster ...
- springBoot系列-->springBoot注解大全
一.注解(annotations)列表 @SpringBootApplication:包含了@ComponentScan.@Configuration和@EnableAutoConfiguration ...
- SpringBoot注解大全(转)
原文链接:[springBoot系列]--springBoot注解大全 一.注解(annotations)列表 @SpringBootApplication:包含了@ComponentScan.@Co ...
- springboot注解大全
springboot注解:@Service: 注解在类上,表示这是一个业务层bean@Controller:注解在类上,表示这是一个控制层bean@Repository: 注解在类上,表示这是一个数据 ...
- SpringBoot注解验证参数
SpringBoot注解验证参数 废话不多说,直接上表格说明: 注解 作用类型 解释 @NotNull 任何类型 属性不能为null @NotEmpty 集合 集合不能为null,且size大于0 @ ...
- SpringBoot注解把配置文件自动映射到属性和实体类实战
SpringBoot注解把配置文件自动映射到属性和实体类实战 简介:讲解使用@value注解配置文件自动映射到属性和实体类 1.配置文件加载 方式一 1.Controller上面配置 @Propert ...
- 转-spring-boot 注解配置mybatis+druid(新手上路)-http://blog.csdn.net/sinat_36203615/article/details/53759935
spring-boot 注解配置mybatis+druid(新手上路) 转载 2016年12月20日 10:17:17 标签: sprinb-boot / mybatis / druid 10475 ...
- 【转载】springboot注解
https://blog.csdn.net/yitian_66/article/details/80866571 springboot注解:@Service: 注解在类上,表示这是一个业务层bean@ ...
- SPRINGBOOT注解最全详解(
# SPRINGBOOT注解最全详解(整合超详细版本) 使用注解的优势: 1.采用纯java代码,不在需要配置繁杂的xml文件 ...
随机推荐
- 猿灯塔:关于Java面试,你应该准备这些知识点
自天子以至于庶人,壹是皆以修身为本 <礼记·大学> 马老师说过,员工的离职原因很多,只有两点最真实: 钱,没给到位 心,受委屈了 当然,我是想换个平台,换个方向,想清楚为什么要跳槽,如果真 ...
- mac篇---mac安装jupyter
1.Jupyter搭建 pip install --user jupyter 如果是在python3中,则用如下命令: pip3 install --user jupyter 如下图所示: 2. Ju ...
- Mysql常用sql语句(24)- delete 删除数据
测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 delete 也属于DML语句(数据操纵语句) ...
- C#获取CPU与网卡硬盘序列号及Base64和DES加密解密操作类
public class RegisterHelp { /// <summary> /// CPU /// </summary> /// <returns>< ...
- 可见格式化模型BFC与应用
什么是BFC BFC指的是块级格式化上下文,简单的来说,BFC就是创建一个div盒子或者给已存在的盒子激活BFC,盒子内部的元素布局不影响盒子外部的元素.也就是所谓的相互隔绝,互不影响. BFC是一个 ...
- python 爬虫写入txt:UnicodeEncodeError: ‘gbk’ codec can’t encode character 错误的解决办法
原链接:https://blog.csdn.net/vito21/article/details/53490435 今天爬一个网站的内容,在写入TXT文件时,某些页面总是报UnicodeEncodeE ...
- Jmeter系列(45)- 详解 Jmeter 跨线程组取参数值的方法,免代码!
如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html 前言 用过 Jmeter 的同学应该都 ...
- 少儿编程:python趣味编程第二课,如何在pygame中写文字
python趣味编程第二课:本文仅针对8-16岁的青少年,所以流程是按如何去教好中小学生走的,并不适合成人找工作学习,因为进度也是按照青少年走的 大家好,我是C大叔,上一篇文章已经跟大家介绍了一款开发 ...
- postman之测试集
简单点,说话的方式简单点 步骤1:测试全部通过,哈哈~ 开玩笑! 适用场景:多组数据测试,像排比句那样,有规律,比如姓名,性别,年龄.这时候的测试要求就是这些信息与返回体的结果做比较!! 步骤1:创建 ...
- 时间复杂度为O(nlogn)的排序算法
时间复杂度为O(nlogn)的排序算法(归并排序.快速排序),比时间复杂度O(n²)的排序算法更适合大规模数据排序. 归并排序 归并排序的核心思想 采用"分治思想",将要排序的数组 ...