设置Spring的作用域


或者使用枚举值设置

单例和多里使用场景

自动注入

@Primary

一个接口有多个实现被spring管理吗,在依赖注入式,spring会不知道注入哪个实现类就会抛出NoUniqueBeanDefinitionException异常
使用@Primary 来告诉Spring 注入哪个实现类

Qualifier

@ComponentScan不同的配置对性能的影响

优化bean配置对spring应用程序的性能影响

在Spring中我们可以通过设置哦组件的扫描范围来简化javaBean的注入过程

在需要大规模对象注入的场景下使用@ComponentScan注解来指定包扫描分为,当然指定包路径中的类需要加@Component注解让Spring创建管理。


懒加载


spring默认使用预加载,及在Spring项目启动时创建bean
懒加载:在spring项目启动不去创建bean, 在使用时创建

三种注入方式



字段注入(IDEA 会提示不推荐)

字段注入的缺点:

  1. 字段注入的bean类外部不可见
  2. 循环依赖问题
  3. 无法设置需要注入的对象为final, 也无法注入那些不可变的对象


字段注入的bean类外部不可见

使用字段注入最大的问题就是配注入类(HealthRecorSercice)的外部可见性,及HealthRecorSercice只能在ClientService 类中被访问,脱离的容器环境就无法被访问,就导致类和容器的耦合度太高,无法脱离容器使用目标对象。
在外部类new 一个ClientService 调用包含了字段注入bean的方法,就会抛出 HealthRecorSercice类空指针异常

循环依赖问题

如下A和B发生了循环依赖,但是种在Spring中是合法的编译启动Sring类时并不会抛出以异常,只有在使用到A或者B时才会报错

被字段注入的对象是在,需要注入他类的实例化之前被实例化好。

构造器注入(官方推荐)

构造器注入就是通过类的构造函数注入
构造器注入可以解决:

  1. 类外部不可见
  2. 无法设置需要注入的对象为final, 也无法注入那些不可变的对象
    不能解决:循环依赖问题
    代码可读性不高

使用构造器注入出现了循环依赖吗,在Spring项目启动时就会抛出循环依赖异常

set方法注入

set注入可以解决:

  1. 类外部不可见
  2. 循环依赖问题
  3. 无法设置需要注入的对象为final, 也无法注入那些不可变的对象

spring三种注入方式相关推荐

  1. Spring 三种注入方式

    1.设置注入 先写demo代码 Uer.java public class User {private String username;private String password;public S ...

  2. spring入门之Spring 常用的三种注入方式

    Spring 常用的三种注入方式 Spring 通过 DI(依赖注入)实现 IOC(控制反转),常用的注入方式主要有三种:构造方法注入,set 方法注入,基于注解的注入. 一.通过构造方法注入 先简单 ...

  3. Spring 依赖注入的理解及三种注入方式

    Spring 依赖注入概念和三种注入方式(理解及应用) 什么是注入 要了解Spring的三种注入方式首先前提是得先了解一下什么是注入,相信很多人对这个概念都是模糊不清的,网上的解释是这样的: 依赖注入 ...

  4. Spring的三种注入方式(为什么推荐构造器注入?)

    Spring的三种注入方式 一.属性注入 @Resource和@Autowired的区别 为什么尽量使用 @Resource? 二.setter 注入 三.构造器注入 具体可以看看Spring官网 为 ...

  5. 扯一把 Spring 的三种注入方式,到底哪种注入方式最佳?

    循环依赖这个问题,按理说我们在日常的程序设计中应该避免,其实这个本来也是能够避免的.不过由于总总原因,我们可能还是会遇到一些循环依赖的问题,特别是在面试的过程中,面试考察循环依赖,主要是想考察候选人对 ...

  6. Spring 的三种注入方式?

    1. 实例的注入方式 首先来看看 Spring 中的实例该如何注入,总结起来,无非三种: 属性注入 set 方法注入 构造方法注入 我们分别来看下. 1.1 属性注入 属性注入是大家最为常见也是使用最 ...

  7. Spring 的三种注入方式,到底哪种注入方式最佳?

    1. 实例的注入方式 首先来看看 Spring 中的实例该如何注入,总结起来,无非三种: 属性注入 set 方法注入 构造方法注入 我们分别来看下. 1.1 属性注入 属性注入是大家最为常见也是使用最 ...

  8. .NetCore中三种注入方式的思考

    .NetCore中三种注入方式的思考 原文:.NetCore中三种注入方式的思考 该篇内容由个人博客点击跳转同步更新!转载请注明出处! .NetCore彻底诠释了"万物皆可注入"这 ...

  9. 依赖注入的三种方式_一起学Spring之三种注入方式及集合类型注入

    本文主要讲解Spring开发中三种不同的注入方式,以及集合数据类型的注入,仅供学习分享使用,如有不足之处,还请指正. 概述 Spring的注入方式一共有三种,如下所示: 通过set属性进行注入,即通过 ...

最新文章

  1. linux kernel makefile analysis
  2. 欢迎参与Java 事务讨论
  3. mysql 5.6.10 32_安装mysql-5.6.10-win32 解压版-略有修改
  4. Socket网络编程--简单Web服务器(6)
  5. 【leetcode】杨辉三角Ⅱ
  6. [2019徐州网络赛J题]Random Access Iterator
  7. 梦三国2英霸模式貂蝉攻略(玩大流)
  8. 第一篇 Qt能做什么?
  9. 前端微信小程序电影类仿淘票票微信小程序
  10. 用chrome浏览器将pdf paper整篇翻译成中文
  11. 【Vegas转】自信从自我欣赏开始
  12. 神武手游做任务链服务器维护,神武手游跑环攻略 跑环注意事项详解
  13. Rancher通过Aliyun-slb服务对接阿里云SLB教程 1
  14. alin的学习之路:序列化与protobuf
  15. 应用商店调研-豌豆荚
  16. OC语言1-前期准备
  17. 旧文备份:热电偶/热电偶分度表生成
  18. 经典坦克大战的python实现
  19. 脑机接口科普0008——侵入式与非侵入式
  20. java通过poi生成excel表格(自适应列宽、合并单元格后的边框添加)

热门文章

  1. android 方法超时,android socket.io中的发出或确认超时处理?
  2. css导航栏_使用CSS的导航栏
  3. ai逻辑回归_人工智能中的逻辑是什么?
  4. observable_Java Observable notifyObservers()方法与示例
  5. php删除数组中的空元素_PHP | 从数组中删除所有出现的元素
  6. Spring Boot(九)Swagger2自动生成接口文档和Mock模拟数据
  7. WebStorm文件类型关联设置
  8. 网页如何做到适应在手机上浏览
  9. 不同网段通过静态路由实现互通,华为S5700交换机开启SSH远程指定IP登陆配置(强烈推荐)
  10. 3D手势姿态跟踪算法:手机端实时检测,多个手势同时捕捉