一、引入Spring框架
在传统的MVC开发模式中,我们通常采用如下的开发顺序:Entity ==> Dao ==> Service ==> Controller
以保存学生为例:
1)创建Strudent实体类
2)创建Dao层:在Dao中提供增删改查方法。如保存学生方法,在save()中创建Strudent并把对象保存到数据库中
3)创建Service层:在Service层中创建Dao并调用Dao对象的save方法
4)创建Controller层:在控制层中接收客户端请求,创建相应的Service并调用
既然Spring是一个好的框架,那么它肯定可以完善或优化传统模式中某些存在的缺点。那么传统模式中存在哪些缺点呢?
1)对象创建问题
在传统模式中,对象的创建是由开发人员创建的,如在Dao层中new出Strudent类,在Service中new出Dao对象。这样就需要开发人员去管理对象的创建时间,数量等问题,加重了开发人员负担
2)对象依赖关系问题
在传统模式中,我们需要在Controller中创建Service对象,在Service层中创建Dao对象等等,说明对象之间是存在依赖关系的,同样需要开发人员去管理
3)重复代码太多问题
如在Dao层中,每次都需要获取数据库连接,写SQL,关闭连接等操作
Spring框架就是用来解决对象创建和对象依赖关系的,同时提出面向切面编程,用于简化开发人员工作量,让开发人员可以集中精力解决业务代码
那么Spring是如何工作的呢?
二、Spring框架
2.1、Spring概念
Spring如何解决上面三个问题呢?我们先介绍一下Spring中的一些概念以及它们的作用
控制反转(Inversion on Control ,IOC),用于解决对象创建问题。简单说,对象的创建交给外部容器完成,而不是由开发人员完成
依赖注入(dependency injection ,DI),用于解决对象的依赖问题
面向切面编程(Aspect Oriented Programming,AOP),用于解决重复代码问题。比如说事务,日志,权限等问题
2.2、Spring结构
Spring框架包含以下六大模块:
1) Spring Core
Spring的核心功能: IOC容器, 解决对象创建及依赖关系
2) Spring Web
Spring对web模块的支持,可以与Struts,SpringMVC框架整合
3) Spring DAO
Spring 对jdbc操作的支持,提供JdbcTemplate模板工具类
4) Spring ORM
Spring对orm的支持,可以与Hibernate,MyBatista框架整合
5) Spring AOP
切面编程
6) SpringEE
spring 对javaEE其他模块的支持
三、 开发步骤
3.1、 导包
3.2、 Spring核心配置文件: applicationContext.xml (也称为bean.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"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- IOC容器的配置: 要创建的所有对象都在这里配置 -->
<bean id="strudent" class="com.zc.a_hello.Strudent"></bean>
</beans>
3.3 从容器中获取对象
public class App {
@Test
public void testAc() throws Exception {
// 得到IOC容器对象
ApplicationContext ac = new ClassPathXmlApplicationContext("com/zc/a_hello/applicationContext.xml");
// 从容器中获取bean
Strudent s = (Strudent) ac.getBean("strudent");
System.out.println(s);
}
}
总结:
本篇文章主要提出传统MVC开发模式的缺点,从而引入Spring框架
并描述了Spring常用的几个概念,以及它们的作用(解决传统模式的缺点)
同时展示了Spring的简单用法