Spring 基础概念——DI、IOC

一、IOC 控制反转

package com.qunar.studyspring.bean;

import com.qunar.studyspring.dao.PersonDao;
import com.qunar.studyspring.object.Person;

/**
 * 这是一个没有控制反转的例子
 * @author liqiu
 *
 */
public class PersonServiceBean {
    private PersonDao personDao = new PersonDao();

    public void save(Person person) {
        personDao.save(person);
    }
}

在解释什么是控制反转之前,先介绍没有出现这个技术之前的例子。如上面所示,PersonDao是直接引用的,也就是说我要在哪里使用PersonDao,就要在哪里初始化它,像是废话是吧,没关系,再看下面的控制反转的例子:

package com.qunar.studyspring.bean;

import com.qunar.studyspring.dao.PersonDao;
import com.qunar.studyspring.object.Person;

/**
 * 这是一个没有控制反转的例子
 * @author liqiu
 *
 */
public class PersonServiceBean {
    private PersonDao personDao;

    //咱们在构造方法内(也可以采用set方法),将对象注入到应用里面,也就是应用里面的personDao是由外部容器负责创建的
    public PersonServiceBean(PersonDao personDao){
        this.personDao = personDao;
    }

    public void save(Person person) {
        personDao.save(person);
    }
}

区别就是在PersonServiceBean中,什么时候创建personDao,自己不知道,有外面调用它的程序控制。也就是说所谓控制反转就是把依赖对象交给外部容易负责创建。

二、DI 依赖注入

所谓依赖注入就是:在运行期间,由外部容器动态将依赖对象注入到组件中。

那么依赖注入和控制反转有啥区别哪?引用网络上面的一段话:“依赖注入和控制反转是对同一件事情的不同描述,只是它们描述的角度不同。依赖注入是从应用程序的角度在描述,即:应用程序依赖容器创建并注入它所需要的外部资源;而控制反转是从容器的角度在描述,既:容器控制应用程序,由容器反向的向应用程序注入应用程序所需要的外部资源。”

三、使用Spring的好处:

1、解耦:Control、Service和Dao相互不在直接声明使用

2、事物管理服务、JMS服务、持久化等等

3、支持单例模式

4、支持AOP技术,面向切面开发

5、有很多的辅助类:JdbcTemplate、HibernateTemplate

6、支持主流框架的集成:Hibernate、Struts等

四、轻量级框架和重量级框架的区别

主要区别是:启用服务的多少。

Spring是否是重量级框架?如果仅仅使用Spring的默认服务,那么就是轻量级框架,如果其他的服务都打开使用的话就是重量级框架。

Spring 基础概念——DI、IOC

时间: 2024-08-11 01:35:44

Spring 基础概念——DI、IOC的相关文章

Spring基础入门之IoC注入

我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由多个对象组成的,所有的对象通过彼此之间的合作,最终实现系统的业务逻辑,为了解决对象之间的耦合度过高的问题,Spring的IOC理论,用来实现对象之间的"解耦".IOC的中文意思就是"控制反转",通俗的理解成权利反转,本来对象的创建由程序员自己写new的代码,new出一个类的对象,在调用它的方法,当代码项目一多起来,就暴露了一个问题:要new的类越多越不好管理.于是Spring的IoC就是把创建对象的事

Spring -- IOC/DI 基础概念的理解

Spring -- IOC/DI 基础概念 思维导图: ------------------------------------------------------- IoC/DI 的基本概念 IoC是什么 ? IoC -- Inversion of control, 控制反转   在Java开发中,IoC意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制.IoC是一种让服务消费者不直接依赖于服务提供者的组件设计方式,是一种减少类与类之间依赖的设计原则. 理解IoC的关键是明

浅析 Spring IoC - 基础概念

1. IoC是什么? IoC(Inversion of Control)即控制反转,不是什么技术,而是一种设计思想.在Java开发中,IoC 意味着将你设计好的对象交给容器去控制,而不是传统的在对象内部直接控制(比如说 new 一个对象).理解好 IoC 的关键是要明确"谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了": 谁控制谁,控制什么:传统Java SE 程序设计,我们直接在对象内部通过 new 创建对象,是程序主动去创建依赖对象:而 IoC 是由 IoC

理解Spring的AOP和Ioc/DI就这么简单

一.什么叫Ioc.DIIoc:Inversion of Control -- 控制反转 DI:Dependency Injection -- 依赖注入 其实这两个概念本质上是没有区别的,那我们先来看看什么叫做Ioc? 假设这么一个场景: 在A类中调用B类的方法,那么我们就称 A依赖B,B为被依赖(对象),相信这点大家能够理解. 传统做法: (1)直接在A(方法)中new出B类对象,然后调用B类方法 -- 硬编码耦合: (2)通过简单工厂获取B类对象,然后调用B类的方法 -- 摆脱了与B的耦合,却

Spring基础 快速入门spring(1) 基础概念

作为流行了10年以上的老将,spring依然精神矍铄,影响不减.本文将对spring很基础的概念进行介绍以及为学习spring最核心和基础的知识作环境搭建的准备. Spring官网 http://docs.spring.io/ 简介 Spring为JAVA企业级应用提供了一个较为复杂框架流行框架.spring到底能做什么,或者说spring现在能做什么? 除了spring framework之外还有spring boot/spring data/spring cloud/- 快接近无所不包了.已

spring(3)------控制反转(IOC)/依赖注入(DI)

一,spring核心概念理解 控制反转: 控制反转即IoC (Inversion of Control),它把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理. 所谓的"控制反转"概念就是对组件对象控制权的转移,从程序代码本身转移到了外部容器. 没有控制反转这种模式前,你创建一个对象,在什么地方用,你得单独通过关键字new出来用, 但现在可以不用这样,你把new对象的权利交给spring配置文件,通过配置文件来'new', 就是权利的反转,你以前干的事

spring学习--一、基础概念

http://www.iteye.com/topic/1123081 上面这个网站(iteye)是国内学习spring非常棒的网站之一. 一.IOC IOC,即控制反转,由IOC容器实现IOC功能,可以将类和雷之间的依赖.创建.拼接.管理.获取的工作用配置的方式来完成,而不必用户自己创建类的代码,目前该配置文件采用xml文件.说的简单点就是:之前自己手动不用框架写项目,大部分的类和大部分的耦合关系都是自己设计,自己来写代码,其中有很多固定的.繁琐的代码,而spring有个叫IOC容器的工具,它可

Helloworld之Spring依赖注入/控制反转(DI/IoC)版

Helloworld之Spring依赖注入/控制反转(DI/IoC)版 作者:雨水, 日期:2014-10-29 摘要:本文主要用于培训初学者理解Spring中的依赖注入的基本概念. 先介绍依赖注入的基本概念,然后以构造器注入为例实现了Helloworld实例. Spring依赖注入/控制反转 在我们通常的编程中,如果类A要依赖类B,通常是由A来创建一个B的实例.而Spring将创建B的实例的工作交给Spring容器来完成,然后注入A,因此称为依赖注入(DI, Dependency Inject

spring aop基础概念

spring aop基础概念 1.什么是aop: aspect oriented programming:面向切面编程. 即通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术. 主要功能是:日志记录,性能统计,安全控制,事务处理,异常处理等. 2.aop的实现方式: (1)预编译:AspectJ (2)运行期动态代理(JDK动态代理.CGLIB动态代理):SpringAOP.JbossAOP 3.aop的概念: (1)切面(aspect):一个关注点的模块化,这个关注点可能会横切多个