JavaEE进阶5/25(属性注入)

news2024/10/7 4:24:28

目录

1.更简单的存取Spring对象

2.获取Bean对象(对象装配)DI

3.  Resource注入

4.Resource注入和Autowired注入的区别


1.更简单的存取Spring对象

2.获取Bean对象(对象装配)DI

对象装配(对象注入)有三种方法是实现

1.通过属性注入

为什么叫属性注入,因为你看上面第二行就像声明一个属性一样     

main方法不能用属性注入(Autowired)

    

2.构造方法注入

就和普通的构造方法一样

 当前类只有一个构造方法的时候可以省略,多个的时候还是要写Autowired 所以建议还是要带上Autowired吧。

当只有一个的时候这是spring为了推广这种写法给我们的好处,就是省略写了Autowired

3.Setter注入

构造个Set类名 方法,然后前面别忘了加Autowired

先写private 类 类名 构造个空的 再用set用Spring传入对象 

三者的优缺点,

1.属性注入,优点使用简单,但是Spring官方不提倡使用,因为

 第一条因为final是要直接赋值的,要么直接赋值,要么构造方法赋值

第二条是Autowired来自于Spring,Spring是Ioc容器,它只适用于Ioc容器

第三条是,更容易违背单一设计原则,不够专一。

2.set注入

优点:更加符合单一设计原则

缺点:

1.不能注入不可变对象,不能注入final修饰的

2.注入对象可被修改

 这一点i相比于属性注入更加危险

3.构造方法注入,构造方法注入好处多多。

1.可以注入不可变对象

2.注入的对象不能被修改(1.final修饰的对象 2.构造方法只在类加载的时候执行一次)

3.通用性更强(相比于属性注入只适合于IOC容器)

4.是彻底完全构造对象的(构造方法的特性)

缺点就是没有属性注入简单

小节:实际开发中大部分还是选择属性注入,因为它够简单。

它仍然是主流的实现方式

3.  Resource注入

这是java中的JDK提供的方法,也是提供属性注入的。写法和Autowired一样

他们之间有什么区别呢?

 1.Resource可以用于set注入和属性注入,但是Autowired多了一个构造方法注入

2.Resource来源于JDK  Autowired来源于Spring

3.Resource支持更多的参数设置,例如name设置,根据名称获取Bean对象 ,而Autowired只required参数

4.Resource注入和Autowired注入的区别

它们都是根据类型和名称一块找的,区别就是顺序不同

Resource是先根据类型找 如果

则先找到 student1 student2(他们都是Student类),然后再根据名字找发现没有student这个名字的对象。那么就会报错(but find 2) 

Resource解决方案:由于Resource可以传入name属性

这样解决就会找到student2对象 

 Qualifier  过滤,预选赛

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/588048.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

含镍废水树脂吸附工艺方案

项目基本信息 工艺及产品信息 甲方 欣兴同泰科技(昆山)有限公司 采用工艺 沉淀工艺过滤系统离子交换放流池 工程公司 / 工艺原理 镍离子以氢氧化物的形式做成镍泥,清液中微量镍离子通过螯合离子交换原理实现出水稳定达标 开始时间 2019/6/20 工艺特点 …

遥感云大数据在灾害、水体与湿地领域典型案例实践及GPT模型

近年来遥感技术得到了突飞猛进的发展,航天、航空、临近空间等多遥感平台不断增加,数据的空间、时间、光谱分辨率不断提高,数据量猛增,遥感数据已经越来越具有大数据特征。遥感大数据的出现为相关研究提供了前所未有的机遇&#xf…

TortoiseGit的安装及使用, 并配合Gitee码云使用

Windows10下, TortoiseGit的安装及使用, 并配合Gitee码云使用! 1) 安装TortoiseGit 官网, 32位, 64位, 自选 Download – TortoiseGit – Windows Shell Interface to Git 2) 点击下载, 安装, 我选择的是64位, 中文安装包(说明: 中文安装包也分32, 64位), 这两个下载. Tips:…

在ubuntu上安装splint

lint lint是最著名的C语言工具之一,是由贝尔实验室SteveJohnson于1979在PCC(PortableC Compiler)基础上开发的静态代码分析,一般由UNIX系统提供。 工具介绍 与大多数C语言编译器相比,lint可以对程序进行更加广泛的错误分析,是一…

2023数博会 | 李雨航:新一代数据安全国际实践,CSA引领数据安全3.0时代

5月26-28日,2023中国国际大数据产业博览会(简称:数博会)在贵州贵阳举办。大会由国家发展和改革委员会、工业和信息化部、国家互联网信息办公室和贵州省人民政府共同主办,是全球首个以大数据为主题的博览会。今年数博会…

css 实现丰富的序号效果

<ol><li><p>日本新潟佐渡岛</p></li><li><p>宣告“飞岛萱草”</p><ol><li><p>迎来最佳观赏期。</p><ol><li><p>据观光协会介绍&#xff0c;</p></li><li><p&…

Linux内核驱动 --- CCF框架 provider驱动的编写

Provider驱动编写流程 复制上节内容中对Provider驱动编写流程的总结&#xff1a; 1&#xff09;分析硬件的clock tree&#xff0c;按照上面所描述的分类&#xff0c;将这些clock分类。 2&#xff09;将clock tree在DTS中描述出来&#xff0c;需要注意以下几2点&#xff1a; …

自定义集合和ES6集合

概念 集合是由一组无序且唯一的项组成的。 空集是指不含任何元素的集合。 说在前面 虽然es6已经有了Set类。但是我们还是希望自己来实现Set类。 原生的Set类参考我这篇博文&#xff1a; JS中数组如何去重&#xff08;ES6新增的Set集合类型&#xff09;经典two sum面试题ht…

C++进阶——哈希的实现

C进阶——哈希的实现 unordered系列关联式容器 在C11出现中有了重大更新就是添加了移动构造和unordered关联容器。在C98中&#xff0c;STL提供了底层为红黑树结构的一系列关联式容器&#xff0c;在查询时效率可达到O( l o g 2 N log_2 N log2​N)&#xff0c;即最差情况下需要…

MYSQL高级之关联查询优化

建表 CREATE TABLE IF NOT EXISTS class ( id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, card INT(10) UNSIGNED NOT NULL, PRIMARY KEY (id) ); CREATE TABLE IF NOT EXISTS book ( bookid INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, card INT(10) UNSIGNED NOT NULL, PRI…

vue router实现路由跳转方法

今天在学习 vue的过程中&#xff0c;看到了 vue的 router&#xff0c;用它来实现路由跳转&#xff0c;非常方便&#xff0c;于是就尝试了一下。效果还不错。 首先我们需要了解一个概念&#xff1a; Router。 Router是一个接口&#xff0c;它提供了一个接口让我们可以从一个地方…

Flutter 笔记 | Flutter 核心原理(二)关键类和启动流程

Widget、Element、BuildContext 和 RenderObject Widget Widget关键类及其子类继承关系如图所示&#xff1a; 其中&#xff0c;Widget是Widget Tree所有节点的基类。Widget的子类主要分为3类&#xff1a; 第1类是RenderObjectWidget的子类&#xff0c;具体来说又分为SingleCh…

08. 算法之递归算法

前言 递归&#xff0c;字面意思是递出去&#xff0c;拿回来&#xff0c;通过不断递过去&#xff0c;拿回来的过程&#xff0c;将每次调用结果保存起来&#xff0c;最后实现循环调用。递归在某些情况下会极大降低我们编程的复杂度。是软件开发工程师一定要掌握的技能。 1. 概念…

Linux—实操篇:vi和vim编辑器

1.vi和vim基本介绍 Linux系统会内置vi文本编辑器 vim具有程序编写的能力&#xff0c;可以看做是vi的增强版本&#xff0c;被程序员广泛使用 2、vi和vim常用的三种模式 2.1、正常模式 以vim打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中&#xff0c;你可…

溯源取证 - 流量分析 中等难度

使用工具&#xff1a; Brim 链接: https://www.brimdata.io/download/ Networkminer 链接: https://www.netresec.com/?pageNetworkMiner Wireshark Strings ida pro 知识点&#xff1a; 通过本篇文章&#xff0c;学习ssh协议特点、学习流量导出文件、学习简单的逆向分析、…

卫星定位北斗芯片AT6558一款高性能BDS/GNSS多模卫星导航接收机SOC单芯片

1 芯片简介 AT6558R是一款高性能BDS/GNSS多模卫星导航接收机SOC单芯片,片上集成射频前端&#xff0c; 数字基带处理器&#xff0c;32位的RISCCPU&#xff0c;电源管理功能。 芯片支持多种卫星导航系统&#xff0c;包括中国的北斗卫星导航系统BDS&#xff0c;美国的GPS,俄罗斯 的…

Mysql DDL执行方式-pt-osc介绍 | 京东云技术团队

1 引言 大家好&#xff0c;接着上次和大家一起学习了《MySQL DDL执行方式-Online DDL介绍》&#xff0c;那么今天接着和大家一起学习另一种MySQL DDL执行方式之pt-soc。 在MySQL使用过程中&#xff0c;根据业务的需求对表结构进行变更是个普遍的运维操作&#xff0c;这些称为…

elasticsearch分词,排序,分页,高亮简单示例

目录 1. 创建ES实体2. 创建查询实体3. 查询方法实现3.1 总体代码3.2 构建查询条件3.2.1 关键词分词 3.3 高亮处理4.总体查询代码 记&#xff0c;写一个简单的es分词demo,es版本6.8.12 如果使用es7有些方法可能会有所改变&#xff0c;请参考7的文档 es安装教程&#xff1a;http:…

SUSE系统上安装HANA

一:安装SUSE操作系统 1.1 准备安装镜像 SLE-15-SP1-安装程序-DVD-x86_64-GM-DVD1 SLE-15-SP1-软件包-x86_64-GM-DVD1 SAP HANA安装文件 IMDB_SERVER20_032_0-80002031.SAR 1.2 引导系统 1.3 选择要安装的产品 SUSE Linux Enterprise Server for SAP Applications 15 SP…

Stable Diffusion教程(5) - 文生图教程

配套视频教程&#xff1a; https://v.douyin.com/UyHNfYG/ 文生图界面标注如下 1 提示词和反向提示词 提示词内输入的东西就是你想要画的东西&#xff0c;反向提示词内输入的就是你不想要画的东西 提示框内只能输入英文&#xff0c;所有符号都要使用英文半角&#xff0c;词语…