一、概述
- IOC(Inversion of Controller):控制反转
- “控制”指的是在我们的应用程序中创建对象的控制权
- “反转”指的是原先在我们应用程序中创建对象都是我们手动去new一个对象,而现在我们将这个创建对象的权利交给spring容器。
- DI(Dependency Injection):依赖注入
- “依赖”指的是在我们应用程序的开发过程中,Person类中的age属性和name属性
- “注入”指的是在创建Person类的过程中,Spring容器根据配置帮助我们将Person类中的age和name属性自动赋值
- IOC和DI的区别和联系
- IOC强调的是控制权力的转变,是一种编程思想
- DI强调的是过程,spring帮我们管理对象的过程中,会帮我们把对象所依赖的属性什么的自动注入到对象中
- 可以简单的说DI是基于IOC思想的实现
二、举个例子
- 目前有一个“人”类,里面有age和name属性
-
package com.zhurouwangzi.entity; ? public class Person { //构造函数 public Person(){ System.out.println("Person被初始化了..."); } ? public void sayHello(){ System.out.println("Hello....."+"年龄:"+age+" 名字:"+name ); } ? private int age; private String name; ? public int getAge() { return age; } ? public void setAge(int age) { this.age = age; } ? public String getName() { return name; } ? public void setName(String name) { this.name = name; } }
- 这个时候我们想要使用Person对象,需要手动new一个Person对象,然后才能够使用
-
@Test public void test1(){ Person p = new Person(); p.setAge(18); p.setName("小明"); p.sayHello(); }
-
- 使用Spring容器
- 在applicationContext.xml文件中配置一个bean
-
<bean id="person" class="com.zhurouwangzi.entity.Person"> <property name="age" value="18"></property> <property name="name" value="小明"></property> </bean>
-
@Test public void test2(){ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); Person p = (Person)applicationContext.getBean("person"); p.sayHello(); }
- 由上边的代码我们可以看出,不使用Spring,我们需要手动new一个Person对象,然后调用对象的set方法才能给对象的属性赋值;而使用Spring,在applicationContext.xml文件中配置好person这个bean对象,spring就会根据配置文件去帮我们创建和管理对象,还会帮我们把属性赋值;
原文地址:https://www.cnblogs.com/Infancy/p/12587787.html
时间: 2024-11-13 10:16:53