3、Hello Spring
-
导入Spring的jar包
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.5.RELEASE</version> </dependency>
-
编写一个实体类:student
package cn.edu.cxtc.domain; public class student { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "student{" + "name='" + name + '\'' + ", age=" + age + '}'; } }
-
编写我们的Spring配置文件,这里我们命名为beans.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"> <!--使用Spring来创建对象,在Spring中,对象都称为bean--> <!--bean就是java对象 , 由Spring创建和管理--> <bean id="student" class="cn.edu.cxtc.domain.student" > <property name="name" value="Spring"></property> <property name="age" value="20"></property> </bean> </beans>
-
测试
public class test { @Test public void test1() { //获取Spring的上下文对象,拿到Spring的容器,容器在手,天下我有 ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); //我们的对象现在都在Spring中了,,我们要使用,直接去里面取出来就可以了 student student = (student)context.getBean("student"); System.out.println(student.toString()); } }
配置文件中的参数
我们原来创建对象
类型 变量名 = new 类型();
student s = new student();
使用beans.xml配置文件
id:变量名
class:对象
bean:bean就是java对象(JavaBean),由Spring创建和管理
id:对象的名字
class:你要创建的对象的类的全限定类名
property:属性,底层使用的是set方法,为属性赋值
name:属性名
value:具体的属性值,基本类型+String
ref:引用的对象(这个属性(引用变量)的值是一个对象)
思考
- student对象是谁创建的:student对象是由Spring创建的
- student对象中的属性值是怎么设置的:属性值是由Spring容器设置的,底层也是setter方法
- 这个过程就叫做控制反转:
- 控制:谁来控制对象的创建,传统应用程序的对象是由程序本身来控制创建的,使用Spring之后,对象是由Spring容器创建的
- 反转:程序本身不创建对象,而变成了被动的接受对象 -->ApplicationContext
- 依赖注入:就是利用set方法来进行注入的
- IOC是一种编程思想,由主动的创建对象变成被动的接受对象
- 到了现在,我们彻底不用在程序中去改动对象了,要实现不同的操作,只需要在xml配置文件中进行修改,所谓的IOC:就是,对象由Spring来创建、管理、装配!!