前言
Spring作为最著名的J2EE框架之一,学起来多少还是要求些Web基础,关于JavaWeb的全套教程我会在后续更新
本篇博客我会用最接地气的方式来描述何为Spring
Spring
Spring概述:
- Spring是一个开源框架
- Spring是一个IOC(DI)和AOP框架
- Spring具有着一些优良特性
1. 非侵入性:基于Spring开发的应用中的对象可以不依赖Spring的API。
2. 依赖注入(DI):可以把它理解为控制反转(IOC)的实现。
3. 面向切面编程:AOP
4. 容器:Spring使一个容器,因为它包含并且管理应用对象的生命周期
5. 组件化:Spring实现了使用简单的组件配置,组合成一个复杂的应用。
6. 一站式:在IOC和AOP的基础上可以整合各种企业应用的开源框架和优秀的第三方类库。
IOC、DI、AOP
- IOC(反转控制):我认为这是一种被动形式的思想,通俗来讲就是把程序员对于bean的控制权力交给Spring管理,且程序员也可以自己在控制bean。
- DI(依赖注入):IOC的一种表述方式,如果说IOC是一种思想,那么DI就是IOC思想的一种具体实现。
- AOP(面向切面编程):通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。
注:在此阶段你只需了解IOC的思想即可,至于DI与AOP在后面的学习你会慢慢了解,无需在此死记硬背。
编写Spring
创建项目
新建JavaProject,并创建如图结构
config用来放置.xml配置文件
lib用来放jar包
搭建环境
Spring自身jar包:- spring-beans-4.0.0.RELEASE.jar
- spring-context-4.0.0.RELE2ASE.jar
- spring-core-4.0.0.RELEASE.jar
- spring-expression-4.0.0.RELEASE.jar
此外还需要:
- commons-logging-1.1.1.jar
将这五个jar包导入lib文件夹中,并右键选择Build Path->Add to Build Path
Hello World!
目标:简单创建一个bean类,并通过Spring创建对象,为属性赋值。第一步:编写student类
package springDemo;
public class Student {
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Student(Integer id, String name) {
super();
this.id = id;
this.name = name;
}
public Student() {
super();
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + "]";
}
}
第二步:创建Spring配置文件,起名stu-di
创建好后发现STS已经自动帮我们写了一些代码
第三步:让我们来添加一些代码:
<!--
使用bean元素可以定义一个由IOC创建的对象
id属性是我们自定义的标识
class属性指定用于创建bean的全类名
-->
<bean id="s1" class="springDemo.Student">
<!-- property子元素为bean的属性赋值 -->
<property name="id" value="1001"></property>
<property name="name" value="张三"></property>
</bean>
第四步:让我们来通过Spring的IOC容器创建一个Student实例
package springDemo;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestStudentBean {
public static void main(String[] args) {
//1.创建IOC容器对象
ApplicationContext cc = new ClassPathXmlApplicationContext("stu-di.xml");
//2.根据id值获取bean实例对象
Student s1 = cc.getBean("s1",Student.class);
//3.打印bean
System.out.println(s1);
}
}
输出结果:
这样我们就通过Spring的IOC容器创建了一个Student类实例。大功告成。
IOC容器也是需要关闭的,但是ApplicationContext并没有提供close(),所以我们要将第9行修改为ConfigurableApplicationContext cc = new ClassPathXmlApplicationContext("stu-di.xml");
这样我们就可以关闭IOC了
//4.关闭资源
cc.close();
解释:ApplicationContext中并没有提供close方法,而作为它的子接口ConfigurableApplicationContext及其后代接口都有提供close,所以我们只需要换成其后代接口类型就可以使用close方法关闭IOC。
太困了,我要去睡觉了,有缘再更