Spring 快速入门案例

Spring框架参考文档

什么是Spring?

  Spring是一个轻量级的开源框架,它是为简化企业级应用开发而生,使用Spring可以使简单的JavaBean实现以前只有EJB才能实现的功能。


Spring有哪些优点?

  • 方便解耦, 简化开发
    Spring是个大工厂,可以将所有对象创建以及对象间依赖关系的维护,交给Spring容器进行管理,避免硬编码造成过度的程序耦合,实现程序各层之间的解耦。

  • AOP编程的支持
    Spring提供面向切面编程(将日志记录、权限控制、性能统计等服务理解成一个切面),可以将日志、权限等服务从业务逻辑中分离出来,可以方便的实现对程序进行权限拦截、运行监控等功能。

  • 声明式事务支持
    Spring只需通过配置就可以完成对事务的管理,无需手动编程,大大提高了开发的效率。

  • 方便集成各种优秀框架
    Spring不排斥各种优秀开源框架,其内部提供了对各种优秀框架(如 : Struts、Hibernate、MyBatis等. . .)的直接支持。

  • 方便程序的测试
    Spring对Junit4支持,可以通过注解的方式来测试Spring程序

  • 降低JavaEE API的使用难度
    Spring对JavaEE开发中一些非常难用的API(JDBC、JavaMail、远程调用等. . .)都提供了封装,使这些API的使用难度大大降低。


Spring的核心:控制反转IoC 和 依赖注入DI 的概念?

  • IoC(Inverse of Control)反转控制,就是将原本在程序中手动创建类对象的控制权,交由Spring框架管理。

  • DI(Dependency Injection)依赖注入,就是在Spring创建某个对象的过程中,将这个对象所依赖的属性(变量或其它类对象)注入进去。

控制反转(IoC

  • 控制反转,是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(DI

  • Spring核心是一个IoC容器(管理Bean),而IoC的关键就是BeanFactory工厂,它会代替我们创建bean,然后使用getBean来获取,而不是自己去new,就是工厂模式的体现。而这个工厂之所以能够创建这个bean,就是因为它读取了我们传入的配置文件,根据配置信息利用反射创建了对应类的实例。

  • IoC的实现可以看做是反射+配置文件+工厂。反射和工厂是Spring内部帮我们封装实现好的。我们只需要使用配置文件进行配置即可


Spring IOC快速入门案例流程:

  • 下载Spring所需基本jar包

  • 复制Spring开发jar包到项目工程中

  • 编写Spring核心配置文件spring.xml

  • 在程序中读取Spring 配置文件,通过Spring框架获得Bean,完成相应的操作

在上面是我们的开发流程,我们第一步一般都是导入所需jar包,但由于刚开始时根本不知道该在什么时候用到哪些jar包,所以这里事先不导入jar包,而是在开发过程中,报错提示缺少哪些jar时,在依次导入



File --→ New --→ Project
CD4356

选择Spring ,然后再 Libraries 下选择set up library later

  • Use library : 如果你已下载好了jar包,可选择该项,然后点击Create . .选择导入所需的jar
  • Download :如果你没有下载好所需jar,可选择该选项下载Spring所需的部分jar,并且它还会自动给你创建一个applicationContext.xml配置文件
  • set up library later :如果你想在创建好项目后在自己手动导入jar,那么可以选择该选项

CD4356

编辑项目名称,并选择项目所在路径
CD4356

创建好的项目结构如下
CD4356


在 src 下创建com.CD4356.ioc包,在包中创建Student
CD4356

Student类

public class Student {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "我叫:"+this.name+",今年:"+this.age+"岁了...";
    }
}


src → New → XML Configuration File → Spring config 创建Spring的配置文件

不对啊,为什么没有Spring config选项,是不是出什么问题了

原来Spring config是依赖于spring-beans-4.3.22.RELEASE.jar产生的,而我们还没有导入该jar包,所以找不到Spring config选项
CD4356

SpringIoCDemo项目下,新建lib文件夹,然后到maven中央仓库中下载spring-beans-4.3.22.RELEASE.jar导入lib文件夹中,选择Add as Library 将jar包放在classpath路径下
在这里插入图片描述

继续 src → New → XML Configuration File → Spring config 创建Spring的xml配置文件,文件名为applicationContext(文件名可任意)
发现导入spring-beans-4.3.22.RELEASE.jar后,可以找到Spring config选项了
CD4356

创建好的applicationContext.xml文件如下所示,这些内容是自动生成的,我们还没有开始编辑该文件
CD4356

编辑applicationContext.xml配置文件,内容如下
CD4356

在src下创建一个测试类,名为SpringApplication

然后在编写加载XML配置文件代码时报错了,那么这是个什么错误呢?

因为ApplicationContext类位于spring-context-4.3.22.RELEASE.jar包中,而我们的项目中还没有带入该jar包,所以这里需要我们导入该jar包
CD4356

解决ApplicationContext报红后,ClassPathXmlApplicationContext又报红了

spring-beans-4.3.22.RELEASE.jar外部依赖spring-core-4.3.22.RELEASE.jar,没有导入spring-core-4.3.22.RELEASE.jar包,无法找到xml配置文件

所以导入spring-core-4.3.22.RELEASE.jar后可解决文题
CD4356

ok,完成下面代码后,点击main函数左边的绿色三角标运行项目
CD4356

哈哈!又报错了

缺少commons-logging-1.2.jar包,以后如果遇到java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory,一般都是缺少jar包导致的( 当然也可能是找不到自定义类 )

复制org.apache.commons.logging mvn到百度中(mvn即maven仓库),进入maven仓库中找,下载导入项目中
CD4356

又报错了

缺少spring-expression-4.3.22.RELEASE.jar

百度org.springframework.expression mvn,下载spring-expression-4.3.22.RELEASE.jar
CD4356

终于运行成功了
CD4356

由上面的内容可以看出,实现一个简单的Spring IoC示例至少需要用到5个jar(4个核心jar + 1个第三方日志jar)包

  • spring-context-4.3.18.RELEASE.jar
  • spring-beans-4.3.18.RELEASE.jar
  • spring-core-4.3.18.RELEASE.jar
  • spring-expression-4.3.18.RELEASE.jar
  • commons-logging-1.2.jar


Spring配置文件

Spring配置文件是用于指导Spring工厂进行Bean生产、依赖关系注入(装配)及Bean实例分发的图纸

容器默认到类路径下加载Spring配置文件,如果配置文件放在src的下一级目录下,则需要在ClassPathXmlApplicationContext(String configLocation)中指定src下的存放路径

/**
 * 在src目录下,新建一个spring包来存放applicationContext.xml
 */
ApplicationContext context=new 
ClassPathXmlApplicationContext("spring/applicationContext.xml");

在一些大型项目中,会有多个配置文件,我们可以在ClassPathXmlApplicationContext()方法中同时加载多个Spring配置文件

ApplicationContext context=new 
ClassPathXmlApplicationContext(new String[]{"spring/applicationContext.xml",
"spring/spring-config.xml",...,"spring/spring-config5.xml"});

其中ApplicationContext.xml是Spring的默认配置文件,当容器启动时找不到指定的配置文档时,将会尝试加载这个默认的配置文件。


Spring配置文件中的<bean>标签

一个用来描述一个对象,id是唯一标识(根据id识别具体的Bean),class表示该类的具体java文件(全类名)

因为spring IoC是一个容器,我们在Spring配置文件中添加对类的描述

在我们加载IOC容器后,Spring就会全自动的为我们创建相应的对象

此时我们就无需再自己new创建对象了,而是直接通过getBean("bean标签中id的属性值")获取即可

这就是所谓的控制反转,将创建对象的权限反转给Spring IoC容器,对类之间的关系进行了解耦,而这一切都离不开Spring配置文件中使用的标签

所以Spring IoC容器会帮我们做两件事:1. 创建对象  2. 为属性赋值
CD4356


Bean工厂的ApplicationContext

Spring IoC设计的核心是Bean容器

BeanFactory采用了java经典的工厂模式,通过从xml配置文件中读取javaBean的定义,来实现javaBean的创建、配置和管理bean与bean之间的依赖关系,所以BeanFactory可以称为IoC容器

ApplicationContext的中文含义是: 应用上下文,继承自BeanFactory接口,它除了包含BeanFactory的所有功能之外,还在国际化支持、资源访问(如URL和文件)、事件传播等方面进行了良好的支持,使之成为Java EE应用放中首选的IoC容器,可应用于Java APP和Java Web中。

CD4356

BeanFactory 和 ApplicationContext 的不同之处

  • BeanFactory容器实例化后并不会自动实例化bean,只有当bean被使用时BeanFactory容器才会对该Bean进行实例化与依赖关系的装配
  • ApplicationContext容器实例化后会自动对所有的单实例bean进行实例化与依赖关系的装配,使之处于待用状态

Spring 中文 文档 部分 内容

Spring 教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

家师曹先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值