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注解综合的更多相关文章

  1. springboot注解使用说明

    springboot注解 @RestController和@RequestMapping注解 我们的Example类上使用的第一个注解是 @RestController .这被称为一个构造型(ster ...

  2. springBoot系列-->springBoot注解大全

    一.注解(annotations)列表 @SpringBootApplication:包含了@ComponentScan.@Configuration和@EnableAutoConfiguration ...

  3. SpringBoot注解大全(转)

    原文链接:[springBoot系列]--springBoot注解大全 一.注解(annotations)列表 @SpringBootApplication:包含了@ComponentScan.@Co ...

  4. springboot注解大全

    springboot注解:@Service: 注解在类上,表示这是一个业务层bean@Controller:注解在类上,表示这是一个控制层bean@Repository: 注解在类上,表示这是一个数据 ...

  5. SpringBoot注解验证参数

    SpringBoot注解验证参数 废话不多说,直接上表格说明: 注解 作用类型 解释 @NotNull 任何类型 属性不能为null @NotEmpty 集合 集合不能为null,且size大于0 @ ...

  6. SpringBoot注解把配置文件自动映射到属性和实体类实战

    SpringBoot注解把配置文件自动映射到属性和实体类实战 简介:讲解使用@value注解配置文件自动映射到属性和实体类 1.配置文件加载 方式一 1.Controller上面配置 @Propert ...

  7. 转-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 ...

  8. 【转载】springboot注解

    https://blog.csdn.net/yitian_66/article/details/80866571 springboot注解:@Service: 注解在类上,表示这是一个业务层bean@ ...

  9. SPRINGBOOT注解最全详解(

    #     SPRINGBOOT注解最全详解(整合超详细版本)          使用注解的优势:               1.采用纯java代码,不在需要配置繁杂的xml文件           ...

随机推荐

  1. [Python] list vs tupple

    前言 列表(list)和 元组(tupple) 是 Python 中常见的两种数据结构.这两者使用方法有一定的相似,俩者都是 Python 内置类型,都可以保存数据集合,都可以保存复合数据,我们同样可 ...

  2. (二)LVS介绍

    LVS分3种模式  (a)NAT(网络地址映射):通过网络地址转换的方法来实现调度       优点:支持所有操作系统及私有网络,且只需一个公网 IP 地址       缺点:用户请求和响应报文都必须 ...

  3. kibana限制用户只具备读图的权限

    假设需求 因为业务需要将日志系统收集到的信息进行图表化展示并交付到用户进行业务交流. 解决方案 这个需求看着似乎蛮简单的,如何解决? 1.对需要的数据进行过滤制作图表 2.对用户的权限限制为只读级别, ...

  4. 确定比赛名次 UDU-1285 + 逃生 UDU 4857 拓扑排序(找不同)

    确定比赛名次 题目大意 有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接获得 ...

  5. UDP/TCP 流程与总结

    1 UDP流程 前序:可以借助网络调试助手工具进行使用 1 UDP 发送方 1 创建UDP套接字 2 准备目标(发送方) IP和端口 3 需要发送的数据内容 4 关闭套接字 from socket i ...

  6. java 面向对象(三十八):反射(二) Class类的理解与获取Class的实例

    1.Class类的理解 1.类的加载过程:程序经过javac.exe命令以后,会生成一个或多个字节码文件(.class结尾).接着我们使用java.exe命令对某个字节码文件进行解释运行.相当于将某个 ...

  7. java 面向对象(二十四):interface:接口

    interface:接口1.使用说明: 1.接口使用interface来定义 * 2.Java中,接口和类是并列的两个结构 * 3.如何定义接口:定义接口中的成员 * * 3.1 JDK7及以前:只能 ...

  8. celery 基础教程(三):配置

    前言 如果你使用默认的加载器,你必须创建 celeryconfig.py 模块并且保证它在python路径中. 一.加载配置方法  1.基础方法  可以设置一些选项来改变 Celery 的工作方式.这 ...

  9. 数据可视化之powerBI技巧(十八)Power BI动态技巧:动态显示列和度量值

    今天分享一个可视化小技巧,如何在PowerBI的表格中动态显示需要的列? 就是这样的效果, 也就是根据切片器的筛选,来显示需要的列,做起来很简单,步骤如下: 01 逆透视表 进入Powerquery编 ...

  10. typedef struct 指针结构体使用方法

    A>>>>>>>>>>>>>>>>>>>>>>>> ty ...