Spring IOC 中三种注入方式

项目错误知识点记录

正文

  最近在项目的时候,用到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的时候,就会可能....报错。这很明显是一个缺点,在设计类的时候,我们都知道底层的封装,不要让使用者了解过多的类的信息...

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

时间: 2024-12-05 20:56:50

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

Spring IOC的三种注入方式

Spring IOC三种注入方式: 1.    接口注入 2.    getter,setter方式注入 3.    构造器注入 对象与对象之间的关系可以简单的理解为对象之间的依赖关系:A类需要B类的一个实例来进行某些操作,比如在A类的方法中需要调用B类的方法来完成功能,叫做A类依赖于B类.控制反转是一种将组件依赖关系的创建和管理置于程序外部的技术,由容器控制程序之间的关系,而不是由代码直接控制. 1.接口注入 public class ClassA {  private InterfaceB

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

spring的核心思想是IOC和AOP,IOC-控制反转,是一个重要的面向对象编程的法则来消减计算机程序的耦合问题,控制反转一般分为两种类型,依赖注入和依赖查找,依赖什么?为什么需要依赖?注入什么?控制什么?依赖注入和控制反转是一样的概念吗?接触新的知识,小编的脑袋中全是大大的问号,不过没有关系,今天这篇博文,小编主要来简单的介绍一下在spring IOC中依赖注入的方法. 依赖注入和控制反转,目的是为了使类与类之间解耦合,提高系统的可扩展性和可维护性.我们可以从以下几个方面理解: a.参与者都

Spring常用的三种注入方式

好文要收藏,摘自:https://blog.csdn.net/a909301740/article/details/78379720 Spring通过DI(依赖注入)实现IOC(控制反转),常用的注入方式主要有三种:构造方法注入,setter注入,基于注解的注入. 构造方法注入先简单了解一下测试项目的结构,用maven构建的,四个包: entity:存储实体,里面只有一个User类dao:数据访问,一个接口,两个实现类service:服务层,一个接口,一个实现类,实现类依赖于IUserDaote

Spring bean的三种注入方式

Spring的一个重要原理就是IOC(Inverse Of Control),即控制反转.IOC就是一种将组件依赖关系的创建和管理置于程序外部的技术,在Spring中Bean组件的实例化和依赖关系的管理控制都由Spring容器负责,对象与对象之间的关系可以简单的理解为对象之间的依赖关系:在 类 A 需要类 B 的一个实例来进行某些操作时,比如在类 A 的方法中需要调用类 B 的方法来完成功能,叫做类 A 依赖于类 B.依赖注入(DI:Dependency Injection) :两个对象之间的依

spring ioc三种注入方式

spring ioc三种注入方式 IOC ,全称 (Inverse Of Control) ,中文意思为:控制反转 什么是控制反转? 控制反转是一种将组件依赖关系的创建和管理置于程序外部的技术. 由容器控制程序之间的关系,而不是由代码直接控制 由于控制权由代码转向了容器,所以称为反转 接口注入 Setter 注入 构造器注入 三种依赖注入方式的比较 : 接口注入: 接口注入模式因为历史较为悠久,在很多容器中都已经得到应用.但由于其在灵活性.易用性上不如其他两种注入模式,因而在 IOC 的专题世界

Spring的三种注入方式

据说不懂spring的程序员就相当于不会Java,于是最近一段时间并行学习下spring框架.先学习总结下spring的IoC的五种注入方式. 这里我想象的场景是这样的:士兵和他的武器的故事.这个是我目前的结构图: Human和Weapon是两个接口,Gun和Solder分别是实现了上面两个接口的类,其中,由于Solder需要Gun而形成了对Gun类的依赖 上面的代码分别为: Weapon接口 public interface Weapon { public void function(); }

C++中三种继承方式的区别

本文来自https://zhidao.baidu.com/question/159111767.html  详细说明了三种继承方式的区别,好文 还可参考另一篇文章: https://blog.csdn.net/one_super_dreamer/article/details/81611118 https://blog.csdn.net/u011857683/article/details/82120998 public公有继承 protected保护继承 private私有继承 我们知道类的p

Spring bean的三种创建方式

1.创建Spring工程 使用eclipse创建一个Spring工程,一个简单的方法就是先创建一个Java工程,然后将Spring的Jar包全部放入到工程里面即可开始编写基于Spring框架的程序.Spring的Jar包可以从github上的源码中取得,下载地址是:https://github.com/spring-projects/spring-framework. 下面是在学习<Spring实战>时创建的一个Spring工程,其目录结构如下: 在Spring中,创建应用对象之间协作关系的行

Spring Boot的三种启动方式

摘自:http://blog.csdn.net/my__Sun_/article/details/72866329 大谢! 1.IDE 运行Application这个类的main方法. 2.在springboot的应用的根目录下运行mvn spring-boot:run. 3:使用mvn install 生成jar后运行. 在pom.xml文件中增加: <build> <plugins> <plugin> <groupId>org.springframewo