IOC容器
1、springioc容器可以帮我们新建对象,并给对象赋值。
org.lanqiao.entity.Student
public class Student {
private int stuNo ;
private String stuName ;
private int stuAge ;
public int getStuNo() {
return stuNo;
}
public void setStuNo(int stuNo) {
this.stuNo = stuNo;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public int getStuAge() {
return stuAge;
}
public void setStuAge(int stuAge) {
this.stuAge = stuAge;
}
@Override
public String toString() {
return this.stuNo+","+this.stuName+","+this.stuAge;
}
applicationContext.xml
<!-- 该文件中产生的所有对象,被spring放入了一个 称之为spring ioc容器的地方 -->
<!-- id:唯一标识符 class:指定类型即类名和包名 -->
<bean id="student" class="org.lanqiao.entity.Student">
<!-- property:该class所代表的类的属性
name:属性名
value:属性值
-->
<property name="stuNo" value="2"></property>
<property name="stuName" value="ls"></property>
<property name="stuAge" value="24"></property>
</bean>
Test.java
public static void springIoc() {
//创建容器
ApplicationContext conext = new ClassPathXmlApplicationContext("applicationContext.xml") ;
//执行从springIOC容器中获取一个 id为student的对象
Student student = (Student)conext.getBean("student") ;
}
创建容器 new ClassPathXmlApplicationContext(“applicationContext.xml”) 时,
完成new对象和注入赋值两个操作。
2、IOC发展史
(1)手动new
Student student = new Student();
student.setXxx();
(2)简单工厂
(3)ioc (超级工厂)
IOC(控制反转)也可以称之为DI(依赖注入):
控制反转:将 创建对象、属性值 的方式 进行了翻转,从new、setXxx() 翻转为了 从springIOC容器getBean()
依赖注入:将属性值 注入给了属性,将属性 注入给了bean,将bean注入给了ioc容器;
无论要什么对象,都可以直接去springioc容器中获取,而不需要自己操作(new\setXxx())。
ioc分为2步:
a.先给springioc中存放对象并赋值
applicationContext.xml
<bean id="javaCourse" class="org.lanqiao.newinstance.JavaCourse"></bean>
<bean id="htmlCourse" class="org.lanqiao.newinstance.HtmlCourse"></bean>
b.拿
Test.java
public static void learnCourseWithIoC() {
ApplicationContext conext = new ClassPathXmlApplicationContext("applicationContext.xml") ;
//获取student对象
Student student = (Student)conext.getBean("student") ;
student.learn("javaCourse");
}
public static void main(String[] args) {
learnCourseWithIoC();
}
Student.java
public class Student {
public void learn(String name) {
ApplicationContext conext = new ClassPathXmlApplicationContext("applicationContext.xml") ;
//获取ICourse对象
ICourse course = (ICourse)conext.getBean(name);
course.learn();
}
}