1. 创建一个maven项目(不勾选骨架),导入依赖,删除src目录,以此作为父项目。
依赖
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.0.RELEASE</version>
</dependency>
<!--单元测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!--lombook插件,免写pojo类的getter,setter等-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
</dependency>
</dependencies>
spring-webmvc是一个很大的包,它会帮我们顺便导入其它诸如beans,aop,context等核心包

2. 在父项目下创建一个module

3.创建user类
import lombok.Data; @Data//getter,setter,toString public class User { private int id; private String name; private String password; }
4.创建核心配置文件applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean class="com.cong.pojo.User" id="user"> <property name="id" value="1"/> <property name="password" value="123456"/> <property name="name" value="cong"/> </bean> </beans>
5.测试类
public class TestIOC { @Test public void test1() { ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");//获取上下文对象 User user = context.getBean("user",User.class); System.out.println(user); } }
结果

那么,这么怎么得到这个结果的呢?先思考两个个问题
1. user对象是谁创建的?
user对象是由Spring创建的
2. user对象的属性是怎么设置的?
user对象的属性是由Spring容器设置的
这个过程就叫控制反转:
控制:谁来控制对象的创建,
传统应用程序的对象是由程序本身控制创建的,比如User user = new User()
使用Spring后,对象是由Spring来创建的,比如User user1 = context.getBean("user",User.class);
反转:程序本身不创建对象,而变成被动的接收对象.
依赖注入:就是利用set方法来进行注入的.
大概可以等价如下

平常我们需要一个对象,都是通过new的方式,现在把这些工作全部交给spring管理了。
IOC是一种编程思想,由主动的编程变成被动的接收.
可以通过newClassPathXmlApplicationContext去浏览一下底层源码 .
OK,到了现在,我们彻底不用再程序中去改动了,要实现不同的操作,只需要在xmI配置文件中进行修改,
所谓的IOC,一句话搞定:对象由Spring来创建,管理,装配!
项目结构
