由于Spring Boot项目底层也都是Spring,使用Spring Boot就需要对Spring的注解有一定的了解,这次就把Spring的部分注解聊一下。熟悉了Spring的注解使用Spring Boot开发更是得心应手。

@ComponentScan:用于指定扫描包的路径,只有在它指定的包下 的类,才能归Spring管理。

Provides support parallel with Spring XML's {@code <context:component-scan>} element。
ComponentScan 这个注解类似于XML配置的context:component-scan的功能

@Bean在不指定Scope的情况下,所有的Bean都是单实例的,而且是饿汉加载,也就是容器启动的时候实例就创建好了。

指定Scope为prototype的时候表示多实例的,而且是饿汉加载(容器启动的时候不会创建,只有在第一次使用的时候才创建。这个@Bean注解常常和@Configuration注解一起使用(PS想更详细了解Configuration这个配置类注解请看我的这篇文章)

@Contional 进行条件判断的注解。(这个注解SpringBoot底层用的多,我们如果写公共的jar特别是自己写Starter的时候会常用到,自己功能开发的时候用的不多)

Contional:有条件的Spring中的注释如下 :Indicates that a component is only eligible for registration when all match
加了Contional。表示组件只有满足Contional的判断条件才有资格注入Spring容器Indicates:表示,表明。eligible:有资格的

@Component :Java类加上这个注解这个类就归Spring容器管理了,代表它是Spring的一个组件。(PS:加注解的类需要在ComponentScan包扫描的范围内),还有开发中常常用到的@Controller,@Service,@Configuration也都属于Component,如下所示:

@Component
public @interface Configuration
@Component
public @interface Controller
@Component
public @interface Service {
上面3个类上面都加了Component注解,他们标注的注解都是Spring的组件
当然还有其他的注解也都加了Component,就不一一列举了。

component: 组成部分;成分;部件Spring 中的描述 Indicates that an annotated class is a "component".
加了注解的类代表是一个组件

@Autowired 默认是按照类型匹配的方式。

容器中查找匹配的bean,当且仅有一个匹配的bean时。Spring将其注入到@Autowired所标注的变量中。如果容器中有一个以上匹配的bean时,则可以通过@Qualifier注解限定bean的名称。(PS一般开发的时候一个接口只有一个实现类,当写的有2个的时候可以用这种方式完成注入不报错)。

Autowired:自动装配In case of a {@link java.util.Collection} or {@link java.util.Map} dependency type, the container autowires all beans matching the declared value type. For such purposes, the map keys must be declared as type String which will be resolved to the correspondingbean names. 

大概解释就是当容器中存在多个同一种类型的要注入的时候,需要指定名称。PS:Qualifier这个刚好可以指定名称。

@EnableConfigurationProperties 有2个作用如下:

1:对类的配置绑定的功能。

2:把这个类自动注入的容器中。

这个注解的作用就是使 @ConfigurationProperties生效,如果一个配置类只配置@ConfigurationProperties注解,而没有配置@Component,那么在IOC容器中是获取不到properties配置转换的bean的 。

@EnableConfigurationProperties 注解相当于把使用 @ConfigurationProperties 注解的类进行了一次注入。(PS有的开发者就有疑问说:想把类注入到Spring容器的把类加上@Component不就可以了。但有的时候我们引入的是其他的jar包我们自己无法直接加@Component注解的,所以需要用到EnableConfigurationProperties这个注解),Spring官方也是非常支持开发者这样做的。

enable:使能够。properties:特性property的复数

/**
* Enable support for {@link ConfigurationProperties}
* annotated beans.{@link ConfigurationProperties} beans
* can be registered in the standard way (for example
* using {@link Bean @Bean} methods) or, for convenience,
* can be specified directly on this annotation.
* 这个注解Spring 也是推荐结合 ConfigurationProperties注解一起使用
*/
@Import(EnableConfigurationPropertiesImportSelector.class)
public @interface EnableConfigurationProperties {

@Import :上一篇文章讲了它的2个作用,这个注解还有第三个作用是导入

public @interface Import {
/**
* {@link Configuration},
* {@link ImportSelector},
* {@link ImportBeanDefinitionRegistrar},第三个作用导入
* 的实现类 ImportBeanDefinitionRegistrar
* or regular component classes to import.
*/
Class<?>[] value();

ImportBeanDefinitionRegistrar然后我们可以实现手动注入bean到Spring容器(用法写一个类实现ImportBeanDefinitionRegistrar,然后重写实现类的方法就可以帮助我们注入相关的bean)。如下图

这篇文章只聊注解的作用,没说实际使用,希望都能看得懂,也希望写的这些对你能有部分作用。

Spring注解篇,学完注解深入了解SpringBoot更容易的更多相关文章

  1. Spring基础篇——通过Java注解和XML配置装配bean

    自动化装配的确有很大的便利性,但是却并不能适用在所有的应用场景,比如需要装配的组件类不是由自己的应用程序维护,而是引用了第三方的类库,这个时候自动装配便无法实现,Spring对此也提供了相应的解决方案 ...

  2. Spring基础篇——通过Java注解和XML配置装配bean(转载)

      作者:陈本布衣 出处:http://www.cnblogs.com/chenbenbuyi 本文版权归作者和博客园共有,欢迎转载分享,但必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留 ...

  3. 死磕Spring之IoC篇 - @Autowired 等注解的实现原理

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...

  4. 死磕Spring之IoC篇 - @Bean 等注解的实现原理

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...

  5. Spring Boot Web 自定义注解篇(注解很简单很好用)

    自从spring 4.0 开放以后,可以添加很多新特性的注解了.使用系统定义好的注解可以大大方便的提高开发的效率. 下面我贴一段代码来讲解注解: 通过小小的注解我们支持了以下功能: 使 spring. ...

  6. Spring Bean 注入 2 注解篇

    1. 自动装配注解 配置applicationContext.xml开启注解 <?xml version="1.0" encoding="UTF-8"?& ...

  7. Spring系列9:基于注解的Spring容器配置

    写在前面 前面几篇中我们说过,Spring容器支持3种方式进行bean定义信息的配置,现在具体说明下: XML:bean的定义和依赖都在xml文件中配置,比较繁杂. Annotation-based ...

  8. [Spring]IoC容器之进击的注解

    先啰嗦两句: 第一次在博客园使用markdown编辑,感觉渲染样式差强人意,还是github的样式比较顺眼. 概述 Spring2.5 引入了注解. 于是,一个问题产生了:使用注解方式注入 JavaB ...

  9. SSH(Struts2+Spring+Hibernate)框架搭建流程<注解的方式创建Bean>

    此篇讲的是MyEclipse9工具提供的支持搭建自加包有代码也是相同:用户登录与注册的例子,表字段只有name,password. SSH,xml方式搭建文章链接地址:http://www.cnblo ...

  10. Spring MVC工作原理 及注解说明

    SpringMVC框架介绍 1) spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面. Spring 框架提供了构建 Web 应用程序的全功 ...

随机推荐

  1. postman的运用

    链接: https://pan.baidu.com/s/1gfaKoAv 密码: dp7t 最近要测试和其他系统对接,忽然想起了postman这款url测试神器. 现分享如下: 下载完成后解压到文件夹 ...

  2. JavaScript合集(流程控制语句)

    流程控制 条件判断语句 条件分支语句 循环语句 条件判断语句 if语句 语法: if(条件表达式){ 语句 } ------- if(a > 10){ alert('a比10大') } if-e ...

  3. 带你了解基于Ploto构建自动驾驶平台

    摘要:华为云Solution as Code推出基于Ploto构建自动驾驶平台解决方案. 本文分享自华为云社区<基于Ploto构建自动驾驶平台>,作者:阿米托福 . 2022年6月15日, ...

  4. Django三大主流Web框架(django版本安装-项目创建-应用创建-django三板斧)

    目录 一:python三大主流web框架 1.python三大主流Web框架 2:三大主流web框架特点 二:正常运行Django项目所需要知道的注意事项 1.计算机的名称不能有中文,不然bug在哪你 ...

  5. 【机器学习】李宏毅——Anomaly Detection(异常检测)

    异常检测概述 首先要明确一下什么是异常检测任务.对于异常检测任务来说,我们希望能够通过现有的样本来训练一个架构,它能够根据输入与现有样本之间是否足够相似,来告诉我们这个输入是否是异常的,例如下图: 那 ...

  6. CVE-2020-1938与CVE-2020-13935漏洞复现

    前言 最近在腾讯云上买了个服务器,准备用来学习.在安装了7.0.76的tomcat后,腾讯云提醒我存在两个漏洞,分别是CVE-2020-1938和CVE-2020-13935,在修复完漏洞后,准备复现 ...

  7. [OpenCV实战]46 在OpenCV下应用图像强度变换实现图像对比度均衡

    本文主要介绍基于图像强度变换算法来实现图像对比度均衡.通过图像对比度均衡能够抑制图像中的无效信息,使图像转换为更符合计算机或人处理分析的形式,以提高图像的视觉价值和使用价值.本文主要通过OpenCV ...

  8. MAC上好用的解压工具

    macOS:11.1 想在 macOS 上打开一个压缩文件,有原生的归档实用工具或 BetterZip.Keka.The Unarchiver 等诸多选择.最近,又有国内独立开发者为我们带来了一款新作 ...

  9. SOFAJRaft源码阅读-模块启动过程

    本篇文章旨在分析SOFAJRaft中jraft-example模块的启动过程,由于SOFAJRaft在持续开源的过程中,所以无法保证示例代码永远是最新的,要是有较大的变动或者纰漏.错误的地方,欢迎大家 ...

  10. strapi系列-如何去除接口里的attributes以及 data key,配置关联数据等

    我们先来创建一个接口,然后看一下正常接口返回的数据格式是什么样子 创建表以及字段 添加一条数据 配置接口权限 我暂时给了这个接口PUBLIC权限,用来测试 使用postman进行接口测试 我们可以看到 ...