Spring(三):IOC和DI
-
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(); }
-
-
-