第一章、简介
本文介绍Spring框架的相关概念:
- Spring框架是 一个开源的框架——免费、提供源码的框架。
- Spring框架使用 基本的JavaBean代替EJB——因为2003年早期的EJB框架是重量级的框架,需要很多其他的东西才能用,难以推广,因此Spring框架取代了EJB。
- Spring版本——现在常用的是Spring4.X版本。Spring2.X基本不用,Spring3.X一些老项目在用。
- Spring框架的两个核心——控制反转(Inversion of Control, IoC)和面向切面(Aspect Oriented Programming, AOP)。、
- Spring框架是 一站式框架。
下面的章节目录,将介绍Spring框架的两个核心、一站式框架。
第二章、Spring两个核心
2.1、 AOP
AOP的基本思想是,扩展功能的实现不是通过修改源代码来实现的,而是通过
2.2、 IoC
以前我们调用一个非静态类时,是通过new出一个对象方式,然后才能调用该对象。但是new的方式存在一些缺点,表现为类与类之间的耦合度太高。
为什么耦合度太高呢?举个例子,现在我们有一个UserA.java和UserB.java,然后UserB.java调用UserA.java的方法MethodA(),必须new一个userA对象。但是new的方法创建对象,存在一些缺点:一旦UserA类的名字或类的方法名字MethodA发生变化,那么就必须修改UserB类里面的代码,耦合性太高了。
public void UserA{
public void MethodA(){
*******
}
}
public void UserB{
UserA userA = new UserA();
userA.MethodA();
}
为了解决这些缺点,AOP的基本思想是,创建对象的方式,不是new出来一个对象,而是通过spring配置或注释的形式创建类的对象。
IoC通过两种方式来创建new对象:
- IoC的配置文件形式来实现创建一个new对象。
- IoC的注解文件形式来实现创建一个new对象。
2.2.1、配置文件形式(XML)
2.2.1.1、配置文件形式的核心技术
- XML配置文件
- dom4j解析XML文件
- 工厂设计模式
- 发射
2.2.1.2、配置文件形式的基本原理
IoC的配置文件形式实现创建一个对象的基本原理是:
- 步骤一、首先创建XML配置文件,并且配置需要创建的对象类。
- 步骤二、创建工厂类,使用dom4j解析配置文件+反射。
步骤一的代码
<bean id="userA" class="cn.itcast.UserA"/> //class=""表示UserA类所在的路径
步骤二的代码
public Static Void UserFactory{
//在工厂类中,返回UserA对象的方法
public static UserA getUserA(){
//1、使用dom4j解析XML文件,根据id值userA,得到id值对应的class属性值
String calssValue="采用dom4j配置文件获取class的属性值";
//2、使用反射创建类的对象,calssValue代表了指定的UserA类了。
Class var = Class.forName(calssValue);
UserA userA = var.newInstance();
return userA;
}
}
现在,我们还是假设UserB.java调用UserA.java的方法MethodA(),并且引入工厂类UserFactory。
public void UserA{
public void MethodA(){
*******
}
}
public void UserB{
UserFactory.getUserA();
}
2.2.1.3、配置文件形式的入门案列
在Dome之前,必须注意一些问题或步骤:
- 会用IDEA创建一个Dynamic web工程
- 会导入Spring的相关jar包,比如Beans包。——Spirng的很多jar包与Spirng.Framework架构,是一一对应的。
- 会创建XML文件及其约束,但要注意XML约速越多,效率越慢,用到几个约束就用几个,把多余的约束去掉。
- 会进行IoC的beans管理及其三种实例化的实现方式——第一种、使用类的无参数构造创建(重点、常用,如下图所示)、第二种、使用静态工厂创建、第三种、使用实例化工厂创建
- 会进行单元测试——@Test
第一种、 使用类的无参数构造创建
2.2.2、注解文件形式
第三章、一站式框架
为什么说spring是一站式框架?因为spring在JavaEE三层结构中,为每一层提供了不同的解决技术:
- web层——提供了Spring MVC解决技术。
- Service层——提供了Spring IoC解决技术。
- Dao层(data access object,数据访问层)——提供了Spring JdbcTemplate解决技术。