Spring的基本概念和结构
创始人
2024-11-04 12:37:08
0

目录

1、Spring框架的基本理解

(1)Spring的关键字

(2)什么是Spring框架

(3)Spring框架有哪些:

2、Spring体系结构

3、Spring框架有哪些模块组成?

(1)Core:核心模块

(2)Testing:测试模块

(3)Data Access:数据访问模块

(4)Web Servlet:基于Servlet的Web应用开发

(5)Integration:企业级系统集成模块(不同系统之间的交互集成)

4、Spring IOC的理解

5、Spring IOC 容器的理解

6、Spring结构框架与搭建

7、Spring两大思想


1、Spring框架的基本理解

(1)Spring的关键字

        核心思想IOC\AOP作用(解耦、简化)简单描述框架组成

(2)什么是Spring框架

        Spring框架是一款轻量级的开发框架,核心思想是 IOC(控制反转)和 AOP(面向切面编程),为 Java 应用程序开发提供组件管理服务,用于组件之间的解耦,以及简化第三方JavaEE中间件技术的使用(JMS、任务调度、缓存、ORM 框架),是一个基础架构型的开发框架;

(3)Spring框架有哪些:

        IOC 容器、Validation 数据校验、AOP 面向切面编程、Transaction事务管理、Spring JDBC、Spring Mvc 框架、以及各类第三方 JavaEE 中间件技术集成;

2、Spring体系结构

3、Spring框架有哪些模块组成?

        关键字:官方文档描述,由7个模块组成。

        Spring Framework:根据官方文档的描述,主要包括以下常用5个模块;

(1)Core:核心模块

        包括:IOC  Container(loc容器),Events(事件通知机制)、Resources(资源加载机制)、i18n(国际化)、Validation(数据校验)、Data Binding(数据绑定)、Type Conversion(类型转换),SpEL(Spring表达式)、AOP(面向切面编程)

(2)Testing:测试模块

        包括:Mock 0biects(测试模拟对象),TestContext Framework(测试框架),Spring MVCTest(用于测试Spring Mvc),webTestclient(用于测试 Webclient、Restful、 webflux 等);

(3)Data Access:数据访问模块

        包括:Transactions(事务管理),DAO Support(统一的Data Access Object DAO 模式封装),JDBC(Spring对于JDBC的操作),O/R Mapping(Spring对于对象映射框架的封装,例如Hibernate等框架)等;

(4)Web Servlet:基于Servlet的Web应用开发

        包括:Spring MVC(Spring 基于 MVC 模式设计封装的Web 框架),WebSocket(Spring)集成WebSocket,WebSocket是一个服务器与客户端双向通信的技术)等;

(5)Integration:企业级系统集成模块(不同系统之间的交互集成)

        包括:Remoting(spring 用于在分布式系统中进行远程服务调用的通讯框架),IMS(Spring集成各类Java消息中间件、Java消息服务[JavaMessage Service]、例如ActiveMQ等),Java Emai1(邮件发送),Tasks Scheduling(任务调度);

4、Spring IOC的理解

        关键字:IOC名词解释,作用是解耦,使用IOC容器管理项目组件之间的耦合关系。

        IOC(Inversion of Control,中文释义:控制反转),是Spring框架的核心思想之一,主要用于解耦。IOC是指将创建对象的控制权转移给Spring框架进行管理,由Spring框架根据配置文件或注解等方式,创建bean对象并管理各个bean对象之间的依赖关系。使对象之间形成松耦合的关系,实现解耦。

  • 控制:指的是对象的创建(实例化、管理)的权利
  • 反转:控制权交给外部环境(Spring框架、IOC容器)

硬编码实现解耦:

  • 不要直接new对象,通过反射创建。
  • 将需要创建的对象独立保存在资源文件中,动态加载。

5、Spring IOC 容器的理解

        关键字:IOC容器的作用、存储形式、初始化过程。

        IOC 通常被理解为IOC Container 容器,IOC 容器其实就是一个Map,key 是每个 bean 对象的ID,value 是 bean 对象本身。IOC 容器负责创建 bean 对象并管理 bean 的生命周期并且根据配置好配置文件或注解,管理 IOC 容器中的每个 bean ,以及根据 bean 之间的依赖关系,完成 bean 之间的注入。
        IOC 容器属于 Spring Core 模块,用来创建和管理 Bean ,默认使用单例的方式将 bean 存储在DefaultListableBeanFactory 类的 beanDefinitionMap 中(一个 ConcurrentHashMap 类型的Map集合);
        IOC 容器使用 ConcurrentHashMap 集合存储了 BeanDefinition 对象,该对象封装了 Spring对一个 Bean 所有配置信息,包括: 类名,属性,构造方法参数,依赖,是否延迟加载,是否是单例等配置信息;

6、Spring结构框架与搭建

        其中包括controller(视图层/视图层)、dao(数据访问层)、service(业务逻辑层)、test(测试层)、util(工具类层)、resources(配置文件层)。

        util层代表的是工具类层,就是为了减少耦合而产生。

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml"); return applicationContext;

        ApplicationContext 是Spring框架中的一个接口,表示Spring的IOC容器(Inversion of Control Container),它负责管理和配置应用程序的所有bean。ApplicationContext 提供了比 BeanFactory 更强大的功能,例如国际化支持、事件传播、声明式机制等。

        ClassPathXmlApplicationContext 是 ApplicationContext 接口的一个实现类,它从类路径下加载XML配置文件来构建应用程序上下文。

        resources层代表的是配置文件层,也是为了减少耦合而创建的,跟MyBatis中的配置JDBC类似。

 

        这段代码是Spring框架中的配置文件片段,使用的是Spring的XML配置方式来定义bean(即对象)的实例及其依赖关系。可以通过.getBean来获取对象。

IUserDao userDao = (IUserDao) BeansFactory.getApplicationContext().getBean("dao");

        getBean("dao"):ApplicationContext接口中的一个方法,用于根据bean的名称获取bean实例。在这里,获取的bean的名称是"dao"。

7、Spring两大思想

        IOC控制反转,DI依赖注入

  • IOC容器:springIOC搭建spring容器管理程序中的各个组件(class)让程序可以实现高内聚,低耦合的编程。
  • AOP面向切面编程

        SpringIOC:    

  • 找到需要以解耦方式获取实例对象的类;   
  • 将需要spring管理的类注入spring容器 - ;     
  • 向spring容器中索取java实例(解耦);
  • 加载spring核心配置文件,获取spring容器对象 - ApplicationContext applicationContext =  new ClassPathXmlApplicationContext("beans.xml");            
  • 获取对象 - Student student = (Student) applicationContext.getBean("student");

        关键词:

        BeanFactory(父)

        ApplicationContext(子)

  • ClassPathXmlApplicationContext==>通过加载主配置文件的相对路径,获取spring容器    
  • FileSystemXmlApplicationContext==>通过加载主配置文件的绝对路径,获取spring容器    
  • AnnotationConfigApplicationContext==>加载配置类,获取spring容器 == 类名.class

相关内容

热门资讯

微扑克游戏辅助器(微扑克)微扑... 微扑克游戏辅助器(微扑克)微扑克发牌规律性(透视)总是是真的有挂(详细辅助新2025版);在进入微扑...
透视线上(德州wepower)... 透视线上(德州wepower)德扑起手牌胜率图(透视)竟然是有挂(详细辅助揭秘攻略)1、透视线上(德...
微扑克wpk透视辅助(微扑克)... 微扑克wpk透视辅助(微扑克)微扑克辅助哪里有卖(透视)一贯是真的有挂(详细辅助2025新版教程)1...
透视攻略(德州俱乐部)德扑之星... 透视攻略(德州俱乐部)德扑之星作弊(透视)总是真的有挂(详细辅助透牌教程)1、操作简单,无需注册,只...
透视ai代打(云扑克德州)智星... 透视ai代打(云扑克德州)智星德州菠萝外挂(透视)竟然真的是有挂(详细辅助插件教程)1、上手简单,内...
透视教程(线上德州)智星德州菠... 透视教程(线上德州)智星德州菠萝开挂(透视)都是是有挂(详细辅助解密教程)1、智星德州菠萝开挂透视辅...
透视代打(德州wepower)... 透视代打(德州wepower)德扑ai智能(透视)一直是有挂(详细辅助AI教程)1、任何德扑ai智能...
透视能赢(wepower德州)... 透视能赢(wepower德州)德州ai人工智能(透视)都是真的是有挂(详细辅助切实教程);1、德州a...
透视系统(德州之星)智星德州菠... 透视系统(德州之星)智星德州菠萝(透视)竟然真的是有挂(详细辅助教你攻略);1、下载好智星德州菠萝辅...
透视计算(wepower德州)... 透视计算(wepower德州)德州ai辅助有用(透视)总是是有挂(详细辅助必备教程)1、德州ai辅助...