* 下载Spring最新开发包

* 复制Spring开发jar包到工程

* 理解IoC反转控制和DI依赖注入

* 编写Spring核心配置文件

* 在程序中读取Spring配置文件,通过Spring框架获得Bean,完成相应操作

本总结是按照版本3.2.2 进行总结的,---下载dist开发包

一、IoC反转控制 快速入门

1、下载开发包

Spring解压目录

  docs 文档(规范和javadoc)

  libs jar包

  schema 开发过程中配置文件需要导入约束

2、将开发jar包导入到 web project

3、编写反转控制 入门程序

 1   public interface IHelloService {
 2       public void sayHello();
 3   }
 4
 5   public class HelloService implements IHelloService{
 6       public void sayHello(){
 7           System.out.println("hello Spring!");
 8      }
 9  }
10
11  public class HelloTest {
12      public static void main(String[] args) {
13
14          // 1、调用HelloService
15          IHelloService helloService1 = new HelloService();// 紧密耦合
16          helloService1.sayHello();
17
18          // 2、spring内部提供工厂,只需要将实现类进行配置,交由Spring工厂创建对象
19          // 读取 Spring配置文件
20          ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
21                  "applicationContext.xml");
22
23          // applicationContext就是工厂
24          // 通过配置bean的id获得class类实例
25          IHelloService helloService2 = (IHelloService) applicationContext
26                  .getBean("helloService");
27
28          helloService2.sayHello();
29      }
30  }

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4        xsi:schemaLocation="
 5 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
 6     <!-- 配置IHelloService 实现类Helloservice -->
 7         <!--
 8             为cn.itcast.spring.quickstart.HelloService定义id,通过id获得实现类完整类名,通过反射构造对象
 9          -->
10     <bean id="helloService" class="cn.itcast.spring.quickstart.HelloService"></bean>
11
12 </beans>

上面代码可以得出:

HelloTest类中使用 HelloService 类对象

传统方法: IHelloService helloservcie = new HelloService();

IoC Inverser of Control 反转控制的概念,就是将原本在程序中手动创建HelloService对象的控制权,交由Spring框架管理,简单的说,就是创建HelloService对象控制权被反转到了Spring框架。

IOC的思想:

程序中通过id获得Bean实例;

使用了Spring,就相当于 使用了一个大的工厂,将原来程序中对象的创建,交给Spring提供的工厂来完成。

(原来在程序中自己new一个对象,现在让spring把对象提供给你,由你自己new对象,到spring把对象提供给你,你的对象的创建权被反转了。)

二、依赖注入

DI(Dependency Injection)依赖注入

DI的好处,如果需要向一个Bean中注入 另一个Bean时,多个Bean都要交给Spring管理,注入比较方便,

     如果不进行配置注入,需要手懂注入。

一个对象,可以依赖另一个对象,依赖表现在 方法参数上

理解DI(Dependency Injection 依赖注入),必须要先理解什么是依赖 (一个对象,可以依赖另一个对象,依赖表现在 方法参数上 )

 1 class A {
 2
 3       void setName(String name){// 就可以说 A 对象 依赖 String 类型参数
 4
 5     }
 6
 7       void setB(B b){// 就可以说 A 对象 依赖 B 类型参数
 8
 9       }
10
11 }

* 依赖与成员变量无关,只和方法有关

* 使用Spring Ioc 将对象 创建权交给Spring, Spring在创建对象时,将依赖对象注入给目标对象

转载于:https://www.cnblogs.com/bluedy1229/p/3604479.html

Spring IoC反转控制的快速入门相关推荐

  1. IoC反转控制初步认识

    学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...

  2. 【SSM框架系列】Spring IoC(控制反转) DI(依赖注入)

    Spring是什么 Spring是分层的 Java SE/EE应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control:反转控制)和 AOP(Aspect Orie ...

  3. Spring教程——Spring IoC(控制反转)

    IoC 是 Inversion of Control 的简写,译为"控制反转",它不是一门技术,而是一种设计思想,是一个重要的面向对象编程法则,能够指导我们如何设计出松耦合.更优良 ...

  4. Spring——IOC(控制反转)

    一.IOC容器 ​ 1.什么是IOC(控制反转) ​ a)把对象创建和对象之间的调用过程,交给Spring进行管理 ​ b)使用IOC目的:为了降低耦合度 ​ 2.IOC底层 ​ a)xml解析.工厂 ...

  5. 详解Spring Ioc(控制反转)

    Spring Ioc 控制反转是一个比较抽象的概念,可以举例来说明. 生活中,人们要用到一种东西,人们的基本想法就是找到东西,比如想喝果汁,在没有饮品店的日子里,最直接的做法就是,买果汁机,水果,准备 ...

  6. 谈谈对Spring IOC(控制反转)的理解--转

    学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...

  7. 谈谈对Spring IOC(控制反转)的理解

    学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...

  8. Spring IOC(控制反转)的理解

    本文大部分来自:https://www.cnblogs.com/Mr-Rocker/p/7721824.html 学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注 ...

  9. Spring Ioc/DI 控制反转和依赖注入

    Ioc(Inversion of Control)和DI(Dependency Injection)的全称分别是控制反转和依赖注入. 如何理解这两个概念呢? Ioc Ioc(控制反转)实际上就说把对象 ...

最新文章

  1. Spring总结之SpringMvc下
  2. mysql创建表关联_MySQL创建高级联表教程
  3. java split 坑_java String split 踩坑记
  4. 李迟2022年1月知识总结
  5. C语言宏定义中#define中的井号#的使用
  6. 关于“客户感知价值提升”的思考(三)---电商渠道客户感知管理方法探讨
  7. 【菜鸟站长成长记】CuteFTP9 初步使用心得
  8. 微信api接口调用-发朋友圈
  9. 哪一个国家耗巨资请熊猫去的_熊猫4.0:一个月过去了,复苏迹象
  10. 微信小程序从零开始开发步骤(三)
  11. 前端小练习:纯css菜单栏
  12. pe怎么安装kali linux,U盘+kali+pe三合一教程!装机,存储,渗透,persistence存储问题解决!...
  13. java程序员学习路线指南
  14. Axure RP 9 基础教程
  15. Windows IIS服务器SSL数字证书安装指南
  16. 计算机word教案设计,信息技术教学:WORD教学设计
  17. html5振动真难受,HTML5振动API支持(HTML5 vibration API support)
  18. python 去掉首尾空格
  19. Java开发之JDK 开发环境配置
  20. php 星座运势_PHP纯手写正则爬取星座屋网站星座运势数据

热门文章

  1. html怎么移动到vue,vue自定义指令之拖动页面的元素
  2. sample语言词法分析_Go 译文之词法分析与解析 Part Three
  3. python xlrd读取excel慢_python操作Excel读写--使用xlrd
  4. 解决linux系统WIFI无法使用5GHz频率的问题
  5. 95-36-210-ChannelHandler-系统Channel-TimeoutHandler
  6. 【Flink】Flink 从 1.9.1 版本 升级到 1.12.4 版本的 注意事项 以及 过程
  7. 【kafka】kafka 控制台 消费 ip 却找 域名 报错 Can‘t resolve address UnresolvedAddressException
  8. 【ElasticSearch】Es 源码之 Discovery DiscoveryModule ZenDiscovery 源码解读
  9. 1.1.0-简介-P6-Paxos
  10. 【ES】ES 写入数据流程