一、引入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的简单用法