【Spring】(2)IoC控制反转:IoC是啥?容器又是啥?写一个简单的Spring程序瞧瞧!

本文介绍了Spring框架中的IoC(控制反转)概念,解释了为何使用IoC以减少代码间的耦合。同时,文章通过创建一个简单的Spring程序,详细讲解了如何配置和使用Spring容器,包括Maven项目的建立、接口与实现类的定义、配置文件的创建以及测试过程。

两个月前跟着b站动力节点王鹤老师的Spring框架教程视频学习完了Spring框架,在学习过程中我将视频中涉及的代码都一行一行手敲了一遍,并且把Spring入门相关的资料整理了一下,在这里记录一下我在Spring框架学习过程中的笔记和一些心得,希望能帮助到想要通过文字教程入门Spring这一框架的小伙伴哦!

视频地址:2020最新Spring框架教程【IDEA版】-Spring框架从入门到精通

1. IoC 简介

控制反转(IoC,Inversion of Control),是一种设计思想,而不是一个具体的技术实现。指将传统上由程序代码直接操控的对象调用权交给容器,通过容器来实现对象的装配和管理。控制反转就是对 对象控制权 的转移,从程序代码本身反转到了外部容器。通过容器实现对象的创建、属性赋值、依赖的管理。

不过, IoC 并非 Spirng 特有,在其他语言中也有应用。

控制:指的是对象创建(实例化、管理)的权力

反转:把原来的开发人员管理、创建对象的权限转移给代码之外的容器实现。由容器代替开发人员管理对象、创建对象、给属性赋值。

正转:由开发人员在代码中使用 new 构造方法创建对象,开发人员主动管理对象。
        public static void main(String args[]){
   
   
            Student student = new Student(); // 在代码中, 创建对象。--正转。
		}

容器:是一个服务器软件,一个框架(Spring

为什么要使用 ioc : 目的就是减少对代码的改动,也能实现不同的功能,实现解耦合。

将对象之间的相互依赖关系交给 IoC 容器来管理,并由 IoC 容器完成对象的注入。这样可以很大程度上简化应用的开发,把应用从复杂的依赖关系中解放出来。 IoC 容器就像是一个工厂一样,当我们需要创建一个对象的时候,只需要配置好配置文件 / 注解即可,完全不用考虑对象是如何被创建出来的。

在实际项目中一个 Service 类可能依赖了很多其他的类,假如我们需要实例化这个 Service,你可能要每次都要搞清这个 Service 所有底层类的构造函数,这可能会把人逼疯。如果利用 IoC 的话,你只需要配置好,然后在需要的地方引用就行了,这大大增加了项目的可维护性且降低了开发难度。

在 Spring 中, IoC 容器是 Spring 用来实现 IoC 的载体, IoC 容器实际上就是个 Map(key,value),Map 中存放的是各种对象。

Spring 时代我们一般通过 XML 文件来配置 Bean,后来开发人员觉得 XML 文件来配置不太好,于是 SpringBoot 注解配置就慢慢开始流行起来。

1626876469972

java中创建对象有哪些方式:

  • 使用构造方法 , new Student()
  • 反射
  • 序列化
  • 克隆
  • IoC :容器创建对象
  • 动态代理

IoC 的体现:

servlet 中 1:创建类继承 HttpServlet
2:在 web.xml 注册 servlet ,使用

 <servlet-name> myservlet </servlet-name>	                               
 <servelt-class>com.kaho.controller.MyServlet</servlet-class>

​ 3:使用 Servlet 的过程中没有创建 Servlet 对象, 即没有 MyServlet myservlet = new MyServlet();

​ 4:Servlet 是 Tomcat 服务器创建的。 Tomcat 也称为容器
​ Tomcat 作为容器:里面存放有 Servlet 对象、Listener、Filter 等对象

IoC 的技术实现:

IoC 技术的实现方式是 依赖注入(DI)

DI(Dependency Injection):依赖注入, 只需要在程序中提供要使用的对象名称就可以, 至于对象如何在容器中创建、赋值、查找都由容器内部实现。程序代码不做定位查询,这些工作由容器自行完成。程序运行过程中,若需要调用另一个对象协助时,无须在代码中创建被调用者,而是依赖于外部容器,由外部容器创建后传递给程序。

Spring 是使用依赖注入(DI)实现了 IoC 的功能,Spring 底层创建对象,使用的是反射机制。

Spring 容器是一个超级大工厂,负责创建、管理所有的 Java 对象,这些 Java 对象被称为 Bean。Spring 容器管理着容器中 Bean 之间的依赖关系,Spring 使用**“依赖注入”**的方式来管理 Bean 之间的依赖关系。使用 IoC 实现对象之间的解耦合。

2. Spring 程序初步

1)创建 Maven 项目

2)引入相关 Maven 依赖

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.kaho</groupId>
  <artifactId>ch01-hello-spring</artifactId>
  <version>1.0-SNAPSHOT</version>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kaho Wang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值