当前位置: 首页 > news >正文

Spring常用注解

文章目录

  • 一、Bean交给Spring管理
    • 1、@Component
    • 2、@Bean
    • 3、@Controller
    • 4、@Service
    • 5、@Repository
    • 6、@Configuration
    • 7、@ComponentScan
  • 二、作用域
    • 1、@Lazy(false)
    • @Scope
  • 三、依赖注入
    • 1、@Autowired
    • 2、@Resource
    • 3、@Qualifier
  • 四、读取配置文件值
    • 1、@Value


一、Bean交给Spring管理

1、@Component

  • 通用注解,等效于基于XML创建Bean的标签<bean id="" class="">
  • 在类上添加,将这个类识别为Bean,放入IOC容器中,交给Spring管理
  • 属性
    //定义bean-id,无值默认为类首字母小写
    String value();
    

2、@Bean

  • 在方法上添加,方法会返回一个对象,放入IOC容器中,交给Spring管理
  • 默认方法名=注入的对象名,也可以指定名称@Bean(name="jedisPool")
  • 和@Component异同?
    • 两个都是注册bean到Spring容器中
    • 当想要将第三方库中的组件装配到你的应用中,在这种情况下,是没有办法在它的类上添加@Component注解的,此时可以使用@Bean,如:RedisTemplate、JedisPool

3、@Controller

  • 添加在控制器类上
  • 里面包含@Component

4、@Service

  • 添加在业务层实现类上
  • 里面包含@Component

5、@Repository

  • 添加在持久化层实现类上
  • 里面包含@Component

6、@Configuration

  • 配置类注解,会把这个类作为配置文件读取
  • 里面包含@Component

7、@ComponentScan

  • 在类上添加,组件扫描注解,该注解就是扫描类上含有@Comment注解的类,将它放入Spring容器
  • 扫描包的范围不仅仅扫描本项目,也会扫描项目中的依赖,如value=“com.kimi”,会扫描本项目中的com.kimi包及其子包、所有依赖中的com.kimi包及其子包
  • 等效于<context:component-scan>
  • 属性
    //设置扫描包路径,不写会扫描该类所在的包及其子包,=basePackages
    String[] value() default {};//设置扫描包路径,=value
    String[] basePackages() default {};
    

二、作用域

1、@Lazy(false)

  • 类上添加,设置饿汉、懒汉
  • 属性
    //true - 懒汉式,默认
    boolean value() default true;
    

@Scope

  • 在类上添加,设置单例、非单例
  • @Scope("prototype")@Scope("singleton") 单例,默认

三、依赖注入

1、@Autowired

  • byType装配,匹配到的类型 >1 会异常
  • 属性
    //匹配类型是否必须存在
    boolean required() default true;
    

2、@Resource

  • 属于java(J2EE),并不属于Spring
  • 若指定name属性,则按照名称(by-name)装配,未找到则抛异常
  • 若指定type属性,则按照类型(by-type)装配,未找到、找到多个则抛异常
  • 未指定name、type属性,按照名称(by-name)装配;如果未找到,则按照类型(by-type)装配

3、@Qualifier

  • 一般配合@Autowired使用
  • @Autowired+@Qualifier = @Resource的by-name
  • 比如一个接口有两个实现类时,使用@Autowired注入找到2个 会异常,使用@Qualifier指明要注入的实现类的名称
@Resource(name="user")
private User user;@Autowired
@Qualifier("user")
private User user;

四、读取配置文件值

1、@Value

  • 将配置文件中的值注入属性,作为属性的初始值
  • 不支持松散绑定
my:host: http://localhostport: 8080
@Value("${my.url}")
private String url;@Value("${my.port}")
private Integer port;

相关文章:

Spring常用注解

文章目录一、Bean交给Spring管理1、Component2、Bean3、Controller4、Service5、Repository6、Configuration7、ComponentScan二、作用域1、Lazy(false)Scope三、依赖注入1、Autowired2、Resource3、Qualifier四、读取配置文件值1、Value一、Bean交给Spring管理 1、Component …...

I.MX6ULL内核开发9:kobject-驱动的基石

目录 一、摘要 二、重点 三、驱动结构模型 四、关键函数分析 kobject_create_and_add()函数 kobject_create()函数 kobject_init&#xff08;&#xff09;函数 kobject_init_internal(&#xff09;函数 kobject_add&#xff08;&#xff09;函数 kobject_add_varg&am…...

Docker-harbor私有仓库

一、Harbor概述 1、Harbor的概念 • Harbor是VMware公司开源的企业级Docker Registry项目&#xff0c;其目标是帮助用户迅速搭建一个企业级的Docker Registry服务 • Harbor以 Docker 公司开源的Registry 为基础&#xff0c;提供了图形管理UI、基于角色的访问控制(Role Base…...

Java之动态规划之子序列问题

目录 0.动态规划问题 一.最长递增子序列 1.题目描述 2.问题分析 3.代码实现 二.最长递增子序列 1.题目描述 2.问题分析 3.代码实现 三.最长重复子数组 1.题目描述 2.问题分析 3.代码实现 4.代码的优化(滚动数组) 四.最长公共子序列 1.题目描述 2.问题分析 3.代…...

java ArrayList

目录 一.简单介绍 二.ArrayList的底层结构 2.1ArrayList的底层结构和操作分析 2.ArrayList 底层源码分析 三.ArrayList 方法 四.代码使用方法 一.简单介绍 ArrayList 类是一个可以动态修改的数组&#xff0c;与普通数组的区别就是它是没有固定大小的限制&#xff0c;我们…...

前端——周总结系列四

1 JS变量与常量 概述 变量&#xff1a;在后续编码过程中会被重新赋值&#xff0c;是不断变化的。常量&#xff1a;固定不变的数据&#xff0c;日常生活比如性别男&#xff0c;代码层面是在编码过程中不会变化的固定数据。 命名规则 变量 可以包含数字&#xff0c;字母&…...

Linux重定向符、管道符讲解

目录 重定向 将命令与文件进行互动 输出重定向 输入重定向 管道符 将命令与命令互动起来 重定向 将命令与文件进行互动 重定向分类 一般情况下&#xff0c;Linux命令运行时都会打开一下三个文件 标准输入文件&#xff1a;stdin文件&#xff0c;文件描述符为0&#xff0c;Li…...

【C++】多态

多态一、多态的概念及定义1.1 虚函数1.2 虚函数重写的特殊情况1.3 override 和 final二、抽象类2.1 概念2.2 用处三、多态的原理3.1 虚函数表3.1.1 虚函数与虚表的位置3.2 多态的原理3.3 静态绑定和动态绑定四、单/多继承的虚函数表4.1 单继承的虚函数表4.2 多继承的虚函数表一…...

分布式项目-品牌管理(5、6)

【今日成果】&#xff1a; //使用阿里云OSS服务&#xff1a; //使用v-if如果地址没有就不显示 &#xff0c; 如果地址错误图片就显示不出来&#xff1b; 【快速回顾】&#xff1a; 任何数据的删除都不要使用物理上的删除&#xff0c;应当使用逻辑上的删除&#xff01;&…...

自定义ESLint规则开发与使用

自定义eslint及使用 项目结构 |-eslint-plugin-demo //自定义eslint插件项目 | |-demo-app // 使用自定义eslint的测试应用 |-README.md 项目效果&#xff1a; github项目地址 自定义ESLint环境准备 安装脚手架 执行下列命令来安装开发eslint的脚手架。 yo(y…...

【JavaScript】35_包装类与垃圾回收机制

10、包装类 在JS中&#xff0c;除了直接创建原始值外&#xff0c;也可以创建原始值的对象 通过 new String() 可以创建String类型的对象 通过 new Number() 可以创建Number类型的对象 通过 new Boolean() 可以创建Boolean类型的对象 但是千万不要这么做 包装类&#xff1…...

【CS224W】(task3)NetworkX工具包实践

note 节点可以为任意可哈希的对象&#xff0c;比如字符串、图像、XML对象&#xff0c;甚至另一个Graph、自定义的节点对象。通过这种方式可以自由灵活地构建&#xff1a;图为节点、文件为节点、函数为节点&#xff0c;等灵活的图形式。暂时省略&#xff1a;【B5】计算机网络图…...

ansible的模块详解

ansible 的概述 什么是ansible Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具。 它用Python写成&#xff0c;类似于saltstack和Puppet&#xff0c;但是有一个不同和优点是我们不需要在节点中安装任何客户端。 它使用SSH来和节点进行通信。Ansible基于 Python…...

《Terraform 101 从入门到实践》 Functions函数

《Terraform 101 从入门到实践》这本小册在南瓜慢说官方网站和GitHub两个地方同步更新&#xff0c;书中的示例代码也是放在GitHub上&#xff0c;方便大家参考查看。 Terraform的函数 Terraform为了让大家在表达式上可以更加灵活方便地进行计算&#xff0c;提供了大量的内置函数…...

使用kubeadm快速部署一个K8s集群

wkubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。 这个工具能通过两条指令完成一个kubernetes集群的部署&#xff1a; # 创建一个 Master 节点 $ kubeadm init# 将一个 Node 节点加入到当前集群中 $ kubeadm join <Master节点的IP和端口 >1. 安装要求 …...

初探富文本之CRDT协同算法

初探富文本之CRDT协同算法 CRDT的英文全称是Conflict-free Replicated Data Type&#xff0c;最初是由协同文本编辑和移动计算而发展的&#xff0c;现在还被用作在线聊天系统、音频分发平台等等。当前CRDT算法在富文本编辑器领域的协同依旧是典型的场景&#xff0c;常用于作为…...

Dubbo和Zookeeper集成分布式系统快速入门

文件结构 代码部分 1、新建provider-server导入pom依赖 <dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.7.3</version></dependency><dependency>&l…...

大数据工具Maxwell的使用

1.Maxwell简介 Maxwell 是由美国Zendesk公司开源&#xff0c;用Java编写的MySQL变更数据抓取软件。它会实时监控Mysql数据库的数据变更操作&#xff08;包括insert、update、delete&#xff09;&#xff0c;并将变更数据以 JSON 格式发送给 Kafka、Kinesi等流数据处理平台。 官…...

freesurfer如何将组模板投影到个体空间——如投影 Schaefer2018 到个体空间

freesurfer如何将组模板投影到个体空间——如投影 Schaefer2018 到个体空间 freesurfer如何将组模板投影到个体空间? freesurfer如何将组模板投影到个体空间——如投影 Schaefer2018 到个体空间freesurfer的整理流程freesurfer的安装freesurfer对结构像分割流程及批处理代码fr…...

Matlab傅里叶谱方法求解二维波动方程

傅里叶谱方法求解基本偏微分方程—二维波动方程 二维波动方程 将一维波动方程中的一维无界弦自由振动方程推广到二维空间上, 就得到了描述无界 (−∞<x,y<∞)(-\infty<x, y<\infty)(−∞<x,y<∞) 弹性薄膜的波动方程: ∂2u∂t2a2(∂2∂x2∂2∂y2)u(1)\frac…...

【深度学习】卷积神经网络

1 卷积神经网络&#xff08;CNN&#xff09;可以做什么&#xff1f; 检测任务分类与检索超分辨率重构&#xff1a;将图像训练的更清晰医学任务等无人驾驶人脸识别 2 用GPU&#xff1a;图像处理单元 比CPU块一百倍以上 3 卷积神经网络与传统神经网络的区别 传统神经网络&…...

【C++】六个默认成员函数——取地址重载,const成员函数

&#x1f345; 初始化和清理 拷贝复制 目录 ☃️1.取地址重载 ☃️2.const取地址操作符重载 这两个运算符一般不需要重载&#xff0c;使用编译器生成的默认取地址的重载即可&#xff0c;只有特殊情况&#xff0c;才需要重载&#xff0c;比如想让别人获取到指定的内容&#xf…...

Win11浏览器无法上网,秒杀网上99.9%教程—亲测完胜

前言 例如&#xff1a;网上的教程 列如&#xff1a; 关闭代理服务器、QQ微信可以登录&#xff0c;但浏览器无法上网、Win11、Win10无法上网、重启网络、重启电脑、去掉代理服务器等等。 一系列教程&#xff0c;要多鸡肋就多鸡肋。 我是用我2020年在CSDN上发布的第一篇文章&…...

Vulkan Graphics pipeline Dynamic State(图形管线之动态状态)

Vulkan官方英文原文&#xff1a;请见 Vulkan 1.3.236 - A Specification 10.9 章节。对应的Vulkan技术规格说明书版本&#xff1a; Vulkan 1.3.2A dynamic pipeline state is a state that can be changed by a command buffer command during the execution of a command buff…...

CSP-《I‘m stuck!》-感悟

题目 做题过程 注&#xff1a;黄色高亮表示需要注意的地方&#xff0c;蓝色粗体表示代码思路 好久没有写过代码了&#xff0c;今天做这道编程题&#xff0c;简直是灾难现场。 上午编程完后发现样例没有通过&#xff0c;检查发现算法思路出现了问题&#xff1a;我计数了S不能到…...

[实践篇]13.19 Qnx进程管理slm学习笔记(二)

【QNX Hypervisor 2.2用户手册】目录(完结) 四,配置文件结构 4.1 根元素 一个配置文件的XML根元素是system,如下: <SLM:system>-- component and module descriptions -- </SLM:system> 4.2 组件 一个进程对于SLM来说就是一个组件。在配置文件中,你必须为一…...

(免费分享)基于 SpringBoot 的高校宿舍管理系统带论文

项目描述 系统代码质量高&#xff0c;功能强大&#xff0c;带论文。 系统的功能主要有&#xff1a; &#xff08;1&#xff09;基本信息管理 基本信息分为学生信息和宿舍信息两部分&#xff0c;其功能是负责维护这些信息&#xff0c;对 它们进行增删查改等操作。 &#x…...

运筹系列78:cbc使用介绍

1. 上手 1.1 快速使用 首先是简单的调用测试&#xff0c;在mac上首先安装clp的库&#xff1a;brew install coin-or-tools/coinor/cbc&#xff0c;然后新建项目进行调用&#xff0c;各项配置如下&#xff0c;注意要添加的library和directory比较多&#xff1a; 1.2 命令行方…...

RocketMQ底层源码解析——事务消息的实现

1. 简介 RocketMQ自身实现了事务消息&#xff0c;可以通过这个机制来实现一些对数据一致性有强需求的场景&#xff0c;保证上下游数据的一致性。 以电商交易场景为例&#xff0c;用户支付订单这一核心操作的同时会涉及到下游物流发货、积分变更、购物车状态清空等多个子系统…...

学习802.11之MAC帧格式(一篇就够!)

802.11规范的关键在于MAC&#xff08;媒介访问控制层&#xff09;&#xff0c;MAC位于各式物理层之上&#xff0c;控制数据传输。负责核心成帧操作以及与有线骨干网络之间的交互。 802.11 MAC采用载波监听多路访问&#xff08;CSMA&#xff09;机制来控制对传输媒介的访问&…...

军事的网站应如何建设/外链平台有哪些

(*) 窗口的摆放在一个窗口上点右键&#xff0c;有floating, dockable, tabbed document这三种摆放方式。floating: 浮在最上&#xff0c;任何地方。dockable: 浮在最上&#xff0c;任何地方&#xff0c;且可以锚定在一侧。有了dockable之后其实floating就成鸡肋了。tabbed docu…...

wordpress网站攻击/seo比较好的公司

Windows下修改Android手机的hosts 1.首先&#xff0c;手机是Root过的。 2.连接手机和电脑&#xff0c;adb shell 进入命令行。3.获取root用户权限&#xff1a;su -root4.不知道为何不能直接修改/etc/hosts的内容&#xff0c;所以修改的是/system/hosts的内容&#xff0c;/etc/h…...

中国品牌网官网查询/百度seo关键词排名查询

今天数据迁移的小组找到我&#xff0c;希望我能够重新构建一些测试环境&#xff0c;其中测试环境中的一些分区表都需要去掉分区&#xff0c;转换成普通表的形式&#xff0c;因为他们在做一些工作的时候碰到了问题&#xff0c;而且希望必要的约束等都保留&#xff0c;这个需求听…...

西安模板建站定制/快速排名优化公司

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼咱们现在安装的Linux版本&#xff0c;都会装有SSH&#xff0c;默认就是OpenSSH&#xff0c;可以通过 ssh -V 命令来查看安装的ssh版本信息&#xff1a;[rootxiaoluo xiaoluo]# ssh -VOpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 201…...

建网站申请/百度投放平台

服务提供者暴露一个服务的详细过程 首先ServiceConfig类拿到对外提供服务的实际类ref(如&#xff1a;HelloServiceImpl),然后通过ProxyFactory类的getInvoker方法使用ref生成一个AbstractProxyInvoker实例&#xff0c;到这一步就完成具体服务到Invoker的转化。接下来就是Invoke…...

使用vue做的商城网站/电子商务网站建设方案

RealThinClient SDK是用于开发标准的HTTP(S)服务器&#xff0c;ISAPI扩展以及客户端的VCL控件。可用于Windows下的CodeGear Delphi 6-2010。关于RealThinClient SDK的教程会持续更新&#xff0c;本节是RealThinClient SDK的第二课&#xff0c;如何使用构建的服务器发送动态生成…...