Spring框架的介绍

个人名片:

🤡作者简介:一名正在努力地大二在校生

🐝座右铭:不浪费时间,不虚度光阴,才能让自己的生命更加充实且有意义。

🎅社区交流:如果有错误的地方,欢迎各位大佬的指导和指正

🐼学习目标:解决程序每一次出现的BUG

Spring框架

        

     Spring框架概述

        Spring是由Rod Johnson组织开发的一个分层的Java SE/EE一站式(full-stack)轻量级开源框架。其核心的理念是控制反转(Inversion of Control,IoC)面向切面编程(Aspect Oriented Programming, AOP)。其中,IOC是Spring的基础,它支撑着Spring对Java Bean的管理功能;AOP是Spring的重要特性,它通过预编译方式和运行期间动态代理实现程序功能,即可以在不修改源代码的情况下为程序统一添加功能。

        Spring贯穿于表现(Web)层、业务逻辑(Service)层和持久(Dao)层,Spring在每个层作用如下:

  •  表现层(Web 层):

        表现层是用户与系统之间的界面层,它负责接收用户请求并向用户展示相应的数据或页面。在Web应用中,表示层通常由控制器、视图和视图解析器组成。在Spring框架中,表现层通常使用@Controller注解来标识控制器。

  •  业务逻辑层(Service 层):

         业务逻辑层是整个应用的核心层,它主要包括业务逻辑的实现和业务数据的处理。此层主要负责处理业务流程的逻辑,并与数据访问层和表现层进行交互。业务逻辑层还用于事务的管理和业务逻辑的增强。在Spring框架中,业务逻辑层通常使用@Service注解来标识。

  • 持久层(Dao 层):

         持久层主要负责数据访问与存储,它与底层的数据源(如数据库、文件系统等)进行交互,执行数据访问、持久化和检索操作。持久层通常采用Spring的JDBC、ORM(如Hibernate、MyBatis)等技术。

    Spring框架的优点

  • 轻量级:Spring框架是轻量级的,它不强制依赖于应用程序,这意味着Spring框架的核心容器在运行时不需要太多的支持。

  • 松耦合:Spring框架支持面向接口编程,它通过依赖注入特性和控制反转容器(IoC容器),帮助实现了松耦合的设计原则。这使得代码更易于维护、测试和拓展。

  • 丰富的功能性和非功能性特性:Spring框架提供了大量的功能性和非功能性特性,包括事务管理、安全性、AOP(面向切面编程)、ORM(对象关系映射)、数据访问、缓存管理等。

  • 增强和扩展:Spring框架的核心容器是一个扩展性良好的容器,可以方便地集成第三方框架,比如Hibernate、MyBatis,从而使得应用能够享受这些框架的优势。

  • 简化开发:Spring框架提供了诸多开发模板,例如 JDBC、JPA、JMS等,它还支持声明式事务管理,帮助开发者更方便地编写应用程序逻辑。

  • 测试性和可维护性:Spring框架的组件化特点、依赖注入以及面向接口编程的优势,使得应用程序更容易测试和维护。

  • 开放源代码:Spring框架是一个完全开放源代码的框架,因此用户可以根据自己的需求进行修改和定制。

         

Spring框架的体系架构

        Spring框架是模块化的,开发者可以选择使用需要的模块,而无需导入其他模块,下面通过一张图展示Spring框架的体系架构。

        1. 核心容器

        核心容器模块在Spring的功能体系中起着支撑作用,是其他模块的基石,它包含以下模块:

  • Beans模块提供BeanFactory功能,是工厂模式实现的基础。
  • Core模块提供框架的基础部分,具有IoC(控制反转)和DI(依赖注入)功能  。
  • Context模块建立在Core模块和Beans模块的基础上,是访问对象的中介。
  • SpEL(Spring expression language,Spring表达语言)模块可以在运行时查询和操作数据。

        2. 数据访问/集成

        数据访问及集成模块用于访问和操作数据库中的数据,它包含以下模块:

  • JDBC模块负责数据库资源管理和错误处理。
  • ORM(Object-Relational Mapping)用于将对象模型和关系数据库之间的数据互相转换和映射。
  • OXM(Object-XML Mapping)用于将对象模型和XML(可拓展标记语言)数据之间进行转换和映射。
  • JMS(Java Message Service)是一种用于在应用程序之间进行异步消息通信的Java API,为分布式应用程序提供了一种可靠、异步、基于消息的通信机制,使得不同的应用程序能够通过发送和接收消息来进行通信。
  • 事务模块通过在POJO(实体类)中实现指定的接口,提供对类的事务管理服务。

        3.Web 

        Web模块提供了广泛的功能和特性,用于构建基于Web的应用程序。它的实现基于ApplicationContext,提供了Web应用的各种工具类,包含的模块如下:

  • Web模块提供面向Web的基础技术支持,例如文件上传、使用Servlet监听器和基于Web的应用程序上下文初始化IoC容器。
  • Web-MVC模块包含Spring对MVC(Model-View-Controller,模型-视图-控制器)开发模式的实现,用于构建灵活的Web应用程序。
  • Web_Socket模块提供对基于Web_Socket的客户端与服务器双向通信的Web应用程序的支持。
  • Web_Portlet模块是基于Web-MVC模块的Portlet实现。Portlet是一种用于构建基于服务端的用户界面组件的规范,它通常用于构建门户网站、企业应用程序和其他类型的Web应用。

        4.其他模块

  • AOP模块主要用于实现面向切面编程,我们在程序中可以定义方法拦截器和切入点,将代码按照功能进行分离,以降低程序的耦合性。
  • Aspects模块提供了AspectJ集成,为面向切面编程提供了多种实现方法。
  • Instrumentation模块提供了对类工具的支持,且实现了类加载器。
  • Messaging模块提供了对消息处理的支持,包括用于构建消息驱动应用程序或者对消息队列(如JMS)进行集成。

Spring入门程序

        通过前面的介绍,下面通过一个简单的入门程序演示Spring框架的使用,在程序控制台打印“某某:欢迎来到Spring”,具体操作如下:

  1.  打开Idea创建一个名称为Spring_Demo的Maven项目,然后在pom.xml文件加载所需使用的Spring Jar包                                                                                                                         

         

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>Spring_Demo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <!--Spring的基础包Spring-core-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.2.8.RELEASE</version>
        </dependency>
        <!--Spring的基础包Spring-beans-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>5.2.8.RELEASE</version>
        </dependency>
        <!--Spring的基础包Spring-context-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.8.RELEASE</version>
        </dependency>
        <!--Spring的基础包Spring-expression-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>5.2.8.RELEASE</version>
        </dependency>
        <!--Spring的依赖包commons-logging-->
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>
    </dependencies>
</project>

 

    2. 在Spring_Demo项目的src/main/java目录下创建com.example包,并在该包下创建名称为HelloSpring类,在类中定义userName属性和hello()方法,具体代码如下:

package com.example;

public class HelloSpring {
    private String userName;

    public void setUserName(String userName) {
        this.userName = userName;
    }
    public void hello(){
        System.out.println(userName+":欢迎来到Spring");
    }
}

    3.在Spring_Demo项目的src/main/resources目录下,新建applicationContext.xml文件作为Hello Spring类的配置文件,并在applicationContext.xml配置文件中创建Id为helloSpring的Bean,具体步骤及代码如下:

<?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.xsd">
    <!-- 将指定类配置给Spring,让Spring创建HelloSpring对象的实例 -->
    <bean id="helloSpring" class="com.example.HelloSpring">
        <!-- 为userName属性赋值 -->
        <property name="userName" value="小明"></property>
    </bean>
</beans>

   4.在SpringDemo项目的src/test/java文件夹下创建测试类TestHelloSpring,在main()方法中初始化Spring容器并加载applicationContext.xml配置文件,通过Spring容器获取HelloSpring类的helloSpring实例,然后调用HelloSpring类中的hello()方法在控制台输出信息。操作步骤、代码及输出结果如下:

  • 26
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring框架是一个流行的开源应用框架,它能解决许多问题。它以"bean工厂"为核心,通过轻量级控制反转(IoC)来实现。在Spring框架中,应用对象可以被声明式地组合,通常是在一个XML文件中进行配置。Spring还提供了许多基础功能,如事务管理和持久化框架集成,它将应用逻辑的开发留给开发者。Spring框架非常轻量,可以在一个大小只有1MB多的JAR文件中发布。此外,Spring框架的处理开销也非常小。它还是非侵入式的,这意味着Spring应用中的对象不依赖于Spring的特定类。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [计算机专业Java外文翻译 中文+英文(Spring框架介绍)](https://download.csdn.net/download/IT_YQG_/86566000)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Spring框架介绍](https://blog.csdn.net/weixin_57849985/article/details/121779021)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值