一、什么是Spring
- Spring是一个基于IOC(控制反转 Inversion of Control)和AOP(之后讲解)的结构,J2EE系统的框架
- 简单来说就是以前的Java程序,对象需要自己new一个,而在Spring中,对象的创建交由Spring管理,不需要自己new
- 简介多说无益,请往下看
二、什么是控制反转 IOC
Spring的核心思想之一就是 控制反转
控制反转:对象的创建 由外部容器完成(外部容器是什么之后会讲解),这个过程就是 IOC
- 进一步解释就是,new一个对象这个过程,不是自己写的,是Spring提供的容器来完成
那对象的赋值,Spring是怎么做的呢?这就要提到依赖注入了
依赖注入(DI)
- Spring使用依赖注入来实现对象之间的依赖关系
- 在创建完对象之后,对象的关系处理就是依赖注入
- 简单地说就是拿到的对象的属性,已经被注入好相关值了,直接使用即可。
- 不理解没关系,参考之后的代码实例
三、编写Spring代码
- 创建项目并导入相关jar包
1. 创建类,用来演示IOC及依赖注入
package com.shan.pojo;
public class Category {
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
private int id;
private String name;
}
2. 在src目录下创建applicationContext.xml文件
applicationContext.xml 是Spring的核心配置文件
<?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 name="category" class="com.shan.pojo.Category">
<property name="name" value="category_1"></property>
</bean>
</beans>
- 通过上面的三行代码,就成功配置了Category类
- 通过关键字(name)category就能获取到Category类的实例对象,这是 控制反转
- 当获取该实例时,对象的name属性就被赋予了"category_1"值,这就是 依赖注入
3. 测试用例
package com.shan.pojo;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"applicationContext.xml"});
Category c = (Category)context.getBean("category");
System.out.println("获取到的对象名字:" + c.getName());
}
}
- main中的第一行代码用于加载整个XML文件
- context.getBean() 可以通过之前Bean中配置好的name获得对象实例
- 整个过程没有用到new关键字