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 就可以创建对象。

原文地址:https://www.cnblogs.com/maigy/p/10808062.html