持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第2天,点击查看活动详情
前言
学习Spring的时候,我也是很头疼的,所以我尽量写的通俗易懂一些,主要面向那些新手小白,能让大家更易于理解。
什么是IoC
IoC其实就是控制反转。
在传统的程序开发中,需要调用对象时,通常由调用者来创建被调用者的实例,即对象是由调用者主动new出来的。
但在Spring框架中创建对象的工作不再由调用者来完成,而是交给loC容器来创建,再推送给调用者,整个流程完成反转,所以是控制反转。
画个图理解下
根据我个人的理解举个例子:以前买东西需要你自己去店里把东西买回来,现在有了IoC,就相当于可以网购,你只需要掏出手机付钱下单,你购买的商品就会送到你手上,省去了一些中间你需要带回家的步骤。
当然,这个例子只是我个人的理解,不见得准确。
IoC的特点
IoC的特点就是解耦合,耦合的代码,我们通过IoC的方式,就可以实现解耦合。
解耦合的目的是为了提高我们程序的可维护性和可扩展性。
使用IoC
1. 创建maven工程,并且在pom.xml中添加spring依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
2.添加lomboky依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.16</version>
</dependency>
- 注:这里添加lombok依赖是为了后面可以使用@Data注解开发,可以省去写类属性的get和set方法。
不理解注解开发的小伙伴我在后续的文章中会详细简介,这里只需要先知道@Data注解的作用即可。
3.创建实体类Dog
package com.xyj;
import lombok.Data;
@Data
public class Dog {
private String name;
private int age;
private String variety;
}
一般方式,手动new
Dog dog = new Dog();
dog.setName("tom");
dog.setAge(3);
dog.setVariety("泰迪");
System.out.println(dog);
打印结果
Dog(name=tom, age=3, variety=泰迪)
使用IoC的方式,在配置文件中添加对象进行管理
<bean id="dog" class="com.xyj.Dog">
<property name="name" value="bob"></property>
<property name="age" value="5"></property>
<property name="variety" value="秋田"></property>
</bean>
- id作为对象的标识
- class表示所关联的类
- property标签会用于属性赋值
- name会自动关联实体类的成员变量
- value为成员变量的值
从IoC中获取对象
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
//加载配置文件
Dog dog = (Dog) applicationContext.getBean("dog");
System.out.println(dog);
打印结果
Dog(name=bob, age=5, variety=秋田)
- 使用applicationContext的getBean方法取对象,括号中的参数为你要取对象的id。
这就是IoC的一个基本的使用。