Spring framework(一)概述

一、Spring framework

即Spring,是其他Spring全家桶的基础和核心:包括SpringMVC、SpringBoot、SpringCloud、SpringData、SpringSecurity。
Spring由Rod Johnson创立,2004年发布了Spring框架的第一版,其目的是用户简化企业级开发的难度和周期。

1.1、核心

Spring是分层的JavaSE/EE一站式轻量级开源框架,以IoC(Inverse of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)为核心。

1.2、IoC

IoC(Inverse of Control,控制反转)指的是将对象的创建交给Spring去创建。使用Spring之前,对象的创建都是new 创建,而使用Spring之后,对象的创建都交给Spring框架。

1.3、AOP

AOP(Aspect Oriented Programming,面向切面编程)用来封装多个类的公共行为,将那些与业务无关,却为业务模块所共用的逻辑封装起来,减少系统的重复代码,降低模块间的耦合度。另外,AOP还能解决一些系统层面上的问题,比如日志、事务、权限等。

1.4、Bean

Spring中,认为一切Java类都是资源,而资源都是类的实例对象Bean,容纳并管理这些Bean的是Spring的IoC容器,所以Spring是一种基于Bean的编程。

1.5、三层体系架构

实际开发工作中,服务端采用三层体系架构,分别为表现层web、逻辑层service、持久层dao。
Spring在表现层提供了与SpringMV、Struts2框架的整合,在业务逻辑层可以管理实务和记录日志等,在持久层可以整合MyBatis、Hibernate、JdbcTemplate。

1.6、Spring的特点

  1. 方便解耦,简化开发:将所有对象的创建和依赖关系维护交给Spring管理。
  2. 方便集成各种优秀框架:Spring内部提供了对各种优秀框架(Struts2、Hibernate、MyBatis)的直接支持。
  3. 降低了Java EE API使用难度:对JAVA EE开发中一些API(JDBC、JavaMail、远程调用)都提供了封装。
  4. 方便程序测试:支持JUnit4,可以通过注解方便地测试Spring程序。
  5. AOP变成支持:面向切面编程,可以方便地实现对程序进行权限拦截和运行监控等功能。
  6. 声明式事务:通过配置就可以完成对事务的管理,无需编程。

二、Spring的体系结构

2.1、Spring Framework Runtime

Spring主要模块:

  • Data Access/Integration(数据访问与集成)
  • Web
  • AOP
  • Aspects
  • Instrumentation(检测)
  • Messaging(消息处理)
  • Core Container(核心容器)
  • Test
    在这里插入图片描述

2.2、Data Access/Integration(数据访问/集成)

包含模块:JDBC、ORM、OXM、JMS、Transaction

  • JDBC:提供了一个JDBC样例模板,消除冗长JDBC编码和必须的事务控制
  • ORM:提供了与“对象-关系”映射框架集成的API,包括JPA、JDO、Hibernate、MyBatis等。
  • OXM:提供了Object/XML映射的抽象层实现,如JAXB、Castor、XMLBean、JiBX、XStream。将java对象映射成为XML数据,或者将XML数据映射成java对象。
  • JMS:java消息服务,提供了一套“消息生产者、消息消费者”模板,JMS用于两个应用程序之间,或者分布式系统中发送消息,进行异步通信。
  • Transaction:支持编程和声明式事务管理。

2.2、Web

包括组件:Web、servlet、websocket、portlet

  • Web:提供了基本web集成特性,例如:多文件上传、使用Servlet监听器的IoC容器初始化以及web应用上下文。
  • servlet:提供了SpringMVC Web框架实现。SpringMVC提供了基于注解的请求资源注入、更简单的数据绑定、数据验证等以及一套非常简易的JSP标签。
  • WebSocket:提供了简单的接口,用户只需要实现接口就可以快速搭建websocket server,从而实现双向通讯。
  • Portlet:提供了Portlet环境中MVC实现。

2.3、Core Container(Spring的核心容器)

是其他模块建立的基础,由Beans模块、Core核心模块、Context上下文模块和SpEL表达式语言模块组成。

  • Beans模块:提供了框架的基础部分,包括控制反转和依赖注入。
  • Core核心模块:封装了Spring框架的底层部分,包括资源访问、类型转换及一些常用工具类
  • Context上下文模块:建立在Core和Beans模块的基础之上,集成Beans模块并添加资源绑定、数据验证、国际化、Java EE支持、容器生命周期、事件传播等。
  • SpEL:提供了强大的表达式语言支持,支持访问和修改属性值,方法调用,支持访问及修改数组、容器和索引器,命名变量、支持算数和逻辑运算,支持从Spring中获取Bean

2.4、AOP、Aspects、Instrumentation和Messaging

  • AOP:提供了面向切面编程,提供了比如日志记录、权限控制、性能统计等通用功能和业务逻辑分离的技术,并且能动态把这些功能添加到需要的代码中。
  • Aspects:提供与AspectJ的集成,是一个功能强大且成熟的面向切面编程框架。
  • InStrumentation:提供了类工具的支持和类加载器的实现。
  • Messaging:提供了对消息传递体系结构和协议的支持。

2.5、Test模块

Spring支持Junit和TestNG测试框架,而且还额外提供了一些基于Spring的测试功能。

三、开发环境

Spring开发需要JDK、Tomcat、Eclipse(或Idea)

3.1、必要组件

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

3.2、介绍

名称作用
spring-core-x.x.xx.RELEASE.jar包含 Spring 框架基本的核心工具类,Spring 其他组件都要用到这个包中的类,是其他组件的基本核心。
spring-beans-x.x.xx.RELEASE.jar所有应用都要用到的,它包含访问配置文件、创建和管理 Bean 以及进行 Inversion of Control(IoC)或者 Dependency Injection(DI)操作相关的所有类。
spring-context-x.x.xx.RELEASE.jarSpring 提供在基础 IoC 功能上的扩展服务,此外还提供许多企业级服务的支持,如邮件服务、任务调度、JNDI 定位、EJB 集成、远程访问、缓存以及各种视图层框架的封装等
spring-expression-x.x.xx.RELEASE.jar定义了 Spring 的表达式语言。需要注意的是,在使用 Spring 开发时,除了 Spring 自带的 JAR 包以外,还需要一个第三方 JAR 包 commons.logging 处理日志信息

使用 Spring 框架时,只需将 Spring 的 4 个基础包以及 commons-logging-1.2.jar 包复制到项目的 lib 目录,并发布到类路径中即可。

3.3、简单的Spring程序

在这里插入图片描述

package com.jsonliu.bean;

/**
 * @Author: JSONLiu
 * @Description:
 * @Date Created in 2021-11-28 17:12
 * @Modified By:
 */
public class HelloWorld {

    private String message;

    public void setMessage(String message) {
        this.message = message;
    }

    public void getMessage() {
        System.out.println("message : " + message);
    }
}
package com.jsonliu.main;

import com.jsonliu.bean.HelloWorld;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * @Author: JSONLiu
 * @Description:
 * @Date Created in 2021-11-28 17:12
 * @Modified By:
 */
public class MainApp {
    public static void main(String[] args) {
        ApplicationContext context=new ClassPathXmlApplicationContext("Beans.xml");
        HelloWorld helloWorld = (HelloWorld) context.getBean("helloWorld");
        helloWorld.getMessage();
    }
}

<?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-3.0.xsd">

    <bean id="helloWorld" class="com.jsonliu.bean.HelloWorld">
        <property name="message" value="Hello World!" />
    </bean>

</beans>
  • 8
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

笑谈子云亭

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

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

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

打赏作者

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

抵扣说明:

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

余额充值