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

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

目录

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.lryc.cn/news/89523.html

相关文章:

  • 【Java学习记录-4】相关名词和概念记录(持续更新)
  • 《程序员面试金典(第6版)》面试题 16.25. LRU 缓存(自定义双向链表,list库函数,哈希映射)
  • kong网关启用jwt认证插件
  • day12 - 图像修复
  • 1720_Linux学习中的问题处理
  • 七人拼团系统开发模式详解
  • CPU性能优化:分支预测
  • 过滤器Filter,拦截器Interceptor
  • kafka整理
  • 为什么有些情况下需要重写equals()和hashCode()方法?
  • 14-Vue技术栈之Vue3快速上手
  • JavaScript高级三、深入面向对象
  • static
  • zabbix动作执行失败 No media defined for user.
  • JavaScript this 关键字
  • ubuntu基本信息查询
  • Revit问题:创建牛腿柱和快速生成圈梁
  • k8s节点删除
  • 45°装备系统
  • 逻辑漏洞学习-身份验证漏洞
  • 【ChatGPT】ChatGPT自动生成思维导图
  • cf1200构造15道
  • 【JavaSE】Java基础语法(十七)
  • 《Spring Guides系列学习》guide11 - guide15
  • 软件测试面试了一个00后,让我见识到了什么是内卷届的天花板
  • JAVA BigDecimal 比较大小 、计算
  • 并发编程Bug的根源
  • 从零搭建微服务-认证中心(二)
  • python入门(11)面向对象 :模块与包
  • 《深入理解计算机系统(CSAPP)》第3章 程序的机器级表示 - 学习笔记