Spring 概述
1、Spring 是什么?
答:Spring 是一个 JavaEE 轻量级的一站式 JavaEE(企业版) 的开发框架。
JavaEE:就是用于开发 B/S 的程序。(企业版)
轻量级:使用最少代码启动框架,然后根据你的需求选择,选择你喜欢的模块使用。
一站式:提供了表示层(Struts2)、服务层、持久层的所有支持。(功能齐全,Spring全家桶)
2、Spring是怎么样实现轻量级的?
答:就是出内核模块(4个jar:spring-beans-4.2.9.RELEASE.jar、spring-context-4.2.9.RELEASE.jar、spring-core-4.2.9.RELEASE.jar、spring-expression-4.2.9.RELEASE.jar),其他模块由开发者自由选择使用,同时支持整合其他框架。也可以称为就是可插拔式开发框架,就像插头和插座一样,插上就可用。这就是Spring框架核心理念(IoC(Inversion of Control):控制反转,实现程序的解耦,从而提高程序的扩展性)。
3、Spring 框架在现实开发中,主要的功能用于整合,聚合各种开发来开发项目。
4、怎样实现 IoC (控制反转)的?
答:要实现 IoC(控制反转)的前提,就是不用 new 就可以创建对象。
5、Spring 是一个 IoC 框架,它是怎么实现不用 new 就可以创建对象的呢?
答:Spring是在框架启动的那一刻,容器对象就读取配置文件或配置类,将配置文件或配置类里的类创建对象,并且将其放在容器(Context)里面,所以用的时候去取便可,而不再需要创建。
具体实现: 流程图
步骤:① 创建一个普通类
② 创建一个 Spring 配置文件,用于描述类与类之间的关系
③ 创建 ApplicationContext 容器对象用于获取 Spring 容器里面的对象。根据 Spring 配置文件的描述,将对象创建并且放在 Spring 容器里面
④ 使用 ApplicationContext 容器对象的 getBean 方法,获取 Spring 容器里面的对象。
代码实现,配置步骤:
① 导入包(Spring 依赖日志包 commons-logging-1.1.3.jar)
② 创建一个普通类
1 package cn.mgy.service; 2 3 public class HelloWorldService { 4 public void say() { 5 System.out.println("---你好世界!--"); 6 } 7 }
③ 创建一个 Spring 配置文件(通过 xsd 规则文件生成):applicationContext.xml
问题1:配置文件为什么使用的是 XML ?
答:因为 XML 是有格式的,这个格式可以让开发工具有提示功能
问题2:Eclise为什么需要 xsd 或者 dtd ?
答:因为开发工具 Eclipse 必须要有 XML 的规则文件(dtd、sxd)才可以对相关的配置文件进行提示
问题3:Eclipse 如果没有 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-4.2.xsd "> <!-- <bean>标签:用于声明一个类,在启动Spring框架的时候根据该配置的类创建对象到容器里面 name --> <bean name="helloWorldService" class="cn.mgy.service.HelloWorldService"></bean> </beans>
④ 编写一个测试类,使用 ApplicationContext 的子类对象根据配置文件创建容器。并且在容器里面获得创建的对象
1 package cn.mgy.test; 2 3 import org.junit.Test; 4 import org.springframework.context.support.ClassPathXmlApplicationContext; 5 6 import cn.mgy.service.HelloWorldService; 7 8 public class HelloWorldServiceTest { 9 10 @Test 11 public void say(){ 12 //创建一个ApplicationContext对象,根据xml配置创建一个对象 13 //直接读取Spring的src目录下的配置文件的子类是ClassPathXmlApplicationContext 14 ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml"); 15 HelloWorldService helloWorldService = context.getBean("helloWorldService", HelloWorldService.class); 16 //调用方法 17 helloWorldService.say(); 18 //结束程序,可以关闭容器 19 context.close(); 20 } 21 }
通过代码测试可以得出,Spring 框架果然不用 new 就可以创建对象。