项目错误知识点记录

正文

  最近在项目的时候,用到Spring框架,Spring框架提供了一种IOC的自动注入功能,可以很轻松的帮助我们创建一个Bean,这样就省的我们四处写new Object()这样的代码了。IOC提供了三种注入方式,接口注入,set方法注入以及构造器注入,三种注入方式使用起来都很easy,具体的使用方法网上都有很多,大家可以自行搜索百度...

  那天当我使用接口注入的时候,发现IDEA给我一个警告(以前也有这样的警告,只不过我没太注意),看了看是让我采用构造器注入方式。这就让我很不解了,以前我就知道IOC中提供三种注入方式,但是却一直不理解它们的区别(始终感觉都是注入,只要能注入Bean,就行啦~)。但是通过IDEA的提示,我发现这件事情不简单,于是我好好的研究了一下这三种注入方式,毕竟知己知彼才能百战不殆~

首先来介绍一下IOC的注入方式,IOC注入方式有三种,

  1. 接口注入:如果采用接口注入一个Bean,那么通过注入的Bean就必须要实现这个接口(这很霸道对不对,我想实现什么接口,还需要规定)...
  2. set方法注入:如果采用set注入一个Bean,那么只需要为Bean中所需要的一些组件提供set方法就可以,通过set方法注入比较清晰,大家一看就知道(哦~原来你想这个Bean提供了这些组件)...
  3. 构造器注入:如果采用构造器注入方式,那么首先为这个Bean提供自定义的构造函数,构造函数中需要的参数就是类中的组件实例。

  这三种方法相互比较一下,会发现接口注入很明显不好,就如同我上面说的太霸道了,而set方法相对于接口注入来说比较好,但是我们考虑一种情况,那就是如果Bean所需要的组件太多了,那我们就需要提供好多set方法....很崩溃,这个类会很长...很长...。构造器注入方式,算是Spring官方建议的方式,因为它只需要提供一个构造函数即可,首先代码不多,其次set方法中给使用者提供了太多的信息,例如如果Bean中需要3个组件,而使用这只set了其中2个组件,那么调用这个Bean的时候,就会可能....报错。这很明显是一个缺点,在设计类的时候,我们都知道底层的封装,不要让使用者了解过多的类的信息...

  综上,就是一个警告带给我的知识...

Spring IOC 中三种注入方式的更多相关文章

  1. Spring IOC以及三种注入方式

    IOC是spring的最基础部分,也是核心模块,Spring的其他组件模块和应用开发都是以它为基础的.IOC把spring的面向接口编程和松耦合的思想体现的淋漓尽致. IOC概念 IOC(Invers ...

  2. 【SSH系列】深入浅出spring IOC中三种依赖注入方式

    spring的核心思想是IOC和AOP,IOC-控制反转,是一个重要的面向对象编程的法则来消减计算机程序的耦合问题,控制反转一般分为两种类型,依赖注入和依赖查找,依赖什么?为什么需要依赖?注入什么?控 ...

  3. 深入浅出spring IOC中三种依赖注入方式

    深入浅出spring IOC中三种依赖注入方式 spring的核心思想是IOC和AOP,IOC-控制反转,是一个重要的面向对象编程的法则来消减计算机程序的耦合问题,控制反转一般分为两种类型,依赖注入和 ...

  4. spring IOC中三种依赖注入方式

    Spring的核心思想是IOC和AOP,IOC-控制反转,是一个重要的面向对象编程的法则,用来消减计算机程序之间的耦合问题,控制反转一般分为两种类型,依赖注入和依赖查找,依赖什么?为什么需要依赖?注入 ...

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

    该篇内容由个人博客点击跳转同步更新!转载请注明出处! .NetCore彻底诠释了"万物皆可注入"这句话的含义,在.NetCore中到处可见注入的使用.因此core中也提供了三种注入 ...

  6. Spring学习笔记(6)——IoC的三种注入方式

    1.接口注入(不推荐) 2.构造器注入(死的应用) 3.getter,setter方式注入(比较常用) Type1 接口注入 我们常常借助接口来将调用者与实现者分离.如: public class C ...

  7. Spring常用的三种注入方式

    好文要收藏,摘自:https://blog.csdn.net/a909301740/article/details/78379720 Spring通过DI(依赖注入)实现IOC(控制反转),常用的注入 ...

  8. Spring:Spring-IOC三种注入方式、注入不同数据类型

    一.Spring IOC(依赖注入的三种方式): 1.Setter方法注入 package com.jpeony.spring.setter; import com.jpeony.spring.com ...

  9. spring Bean的三种注入方式

    1.构造函数注入: 构造函数的注入方式分为很多种 (1)普通构造函数,空参数的构造函数 <bean id="exampleBean" class="examples ...

随机推荐

  1. i=i+1与i+=1的区别及效率(Java)

    原博客地址 在做个java优化的PPT时,看到了i=i+1与i+=1的区别,在这之前还真没想到那么细. 1.x=x+1,x+=1及x++的效率哪个最高?为什么? x=x+1最低,因为它的执行如下. ( ...

  2. POJ 3070 + 51Nod 1242 大斐波那契数取余

    POJ 3070 #include "iostream" #include "cstdio" using namespace std; class matrix ...

  3. LABVIEW伺服电机测试平台

    遇见的关键问题总结: 怎么发脉冲:(1)保持电平一段时间进行翻转(2)仿真脉冲 怎样测试脉冲数:通过检测当前时刻和前一时刻的电平是否相同(通过反馈或者移位寄存器实现)来检测脉冲跳变 通过编码器测量速度 ...

  4. SpringMVC——如何获取请求参数

    参考 http://www.cnblogs.com/bigdataZJ/p/springmvc2.html (文章讲了几个注解的使用,但不够深入.) 参考 http://www.cnblogs.com ...

  5. bzoj1257 数学整理二分查询

    2013-11-15 21:55 原题传送门http://www.lydsy.com/JudgeOnline/problem.php?id=1257 要求求sigma k mod i(i<=n) ...

  6. django unresolved template

    参考:https://stackoverflow.com/questions/8487410/pycharm-django-1-3-static-url-in-templates-unresolved ...

  7. GCC编译安装

    1. 安装静态库,如果没有安装静态库,后面编译不会通过: yum install glibc-static libstdc++-static -y 2. 下载GCCxxx.tat.gz: wget h ...

  8. python数据类型-----字符串

    今天来总结下python3.4版本字符串的一些操作方法,对这些方法先作一个简单的分类,按照分类来进行总结. Sequence Typessequence类型有六种:strings, byte sequ ...

  9. RBTree 红黑树

    红黑树 一.红黑树概述 红黑树不仅是一个二叉搜索树,并且满足以下规则: 1>每个节点不是红的就是黑的, 2>根结点为黑色, 3>如果节点为红色,其子节点必须为黑色, 4>任一节 ...

  10. UVALive - 5798

    Jupiter Atacks! /** 题意:B,P,L,N,分别表示进制,mod,数组的个数,操作数 做法:树状数组 欧几里得 每个数加入到数组Tree的数是 B^(L-i) 用树状数组进行维护前缀 ...