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来创建,管理,装配!
项目结构