首页 >> 大全

Spring 体系结构,核心理念

2024-01-01 大全 26 作者:考证青年

目录 的体系结构的核心组件 的2大特性 | 核心 AOP 面向切面编程 中的2个核心概念 容器 中用到的设计模式

相关问题

说明

概述 的设计目标

设计目标 | 设计初衷

为了降低Java开发的复杂性,采取了以下4种关键策略

的设计理念

BOP,bean 面向bean编程

的优缺点

优点|好处

缺点

的体系结构

是轻量级的一站式开发框架,以 IoC、AOP 为核心,集成了Test模块来支持测试,集成了 Data 数据访问模块来操作数据源,集成了Web模块来支持web开发。

的5大版块|功能

Core 核心容器模块分为4个小模块

的核心组件

的核心是bean,核心组件都是围绕bean进行设计的

core模块的

定义对资源的访问,用于加载资源

public interface Resource extends InputStreamSource {boolean exists();default boolean isReadable() {return exists();}default boolean isOpen() {return false;}default boolean isFile() {return false;}URL getURL() throws IOException;URI getURI() throws IOException;File getFile() throws IOException;default ReadableByteChannel readableChannel() throws IOException {return Channels.newChannel(getInputStream());}long contentLength() throws IOException;long lastModified() throws IOException;Resource createRelative(String relativePath) throws IOException;String getFilename();String getDescription();}

接口定义的是通用的资源访问,屏蔽了资源的来源、格式的不同,常见的最终实现类如下

beans模块的

用于描述bean的定义、元数据、bean之间的依赖关系。

xml文件或注解定义的bean会被转换为实例,存储在 中。

public interface BeanDefinition extends AttributeAccessor, BeanMetadataElement {//scope常量String SCOPE_SINGLETON = ConfigurableBeanFactory.SCOPE_SINGLETON;String SCOPE_PROTOTYPE = ConfigurableBeanFactory.SCOPE_PROTOTYPE;//role常量,标识bean在系统中的角色int ROLE_APPLICATION = 0;  //开发自定义的beanint ROLE_SUPPORT = 1;  //spring中对外提供支持、整合能力,暴露给开发使用的beanint ROLE_INFRASTRUCTURE = 2;  //基础设施,spring中的基础bean//父BeanDefinition的namevoid setParentName(@Nullable String parentName);String getParentName();//BeanClassName,bean对应的java类的类名void setBeanClassName(@Nullable String beanClassName);String getBeanClassName();//作用域void setScope(@Nullable String scope);String getScope();//懒加载void setLazyInit(boolean lazyInit);boolean isLazyInit();/** 依赖关系。dependsOn 是当前bean依赖的其它bean的name。在getBean()中:合并BeanDefinition修改后,会先通过getBean()获取dependsOn依赖的实例,保证所有dependsOn依赖都已经实例化,再根据bean的scope调用createBean()创建bean实例 */void setDependsOn(@Nullable String... dependsOn);String[] getDependsOn();/** 自动装配时是否优先选用。有多个可用实例时,会优先使用primary为true的bean */void setPrimary(boolean primary);boolean isPrimary();//要使用的 FactoryBean 的namevoid setFactoryBeanName(@Nullable String factoryBeanName);String getFactoryBeanName();//要使用的 FactoryMethod 的namevoid setFactoryMethodName(@Nullable String factoryMethodName);String getFactoryMethodName();//构造器的参数表,包括参数名、参数类型、参数值ConstructorArgumentValues getConstructorArgumentValues();default boolean hasConstructorArgumentValues() {return !getConstructorArgumentValues().isEmpty();}//属性值,包括属性名、属性值MutablePropertyValues getPropertyValues();default boolean hasPropertyValues() {return !getPropertyValues().isEmpty();}//初始化方法void setInitMethodName(@Nullable String initMethodName);String getInitMethodName();//销毁方法void setDestroyMethodName(@Nullable String destroyMethodName);String getDestroyMethodName();//bean的角色,比如spring本身的bean、第三方框架的bean、开发自定义的beanvoid setRole(int role);int getRole();//bean的描述文字。对bean进行简单介绍,主要给其他开发看void setDescription(@Nullable String description);String getDescription();//一些判断方法。可以把抽象类标识为bean,但抽象类本身是不会实例化的。boolean isSingleton();boolean isPrototype();boolean isAbstract();//bean对应的Resource的描述信息String getResourceDescription();/** 获取原始的BeanDefinition。一个bean可以用多种方式共同配置,在加载过程中会合并BeanDefinition的修改,这个bean最先解析提取到的BeanDefinition即为原始BeanDefinition */BeanDefinition getOriginatingBeanDefinition();}

beans模块的

是容器的顶级接口,定义IoC容器的基础功能,包括bean的创建、装配、获取、管理

模块的

_spring的核心机制是_理念体系包括

加载资源、配置得到,根据创建。

:背景、环境、上下文,融合了容器中的各种资源,开发者、第三方类库通过与交互来操作容器、获取容器中的资源,相当于营造的的应用环境、对外暴露的util。

就是模块中的。

的2大特性 | 核心 IoC 控制反转

IoC: of ,控制反转,传统应用是由开发者在代码中控制对象的创建,IoC是将对象创建的控制权交给IoC容器,由IoC容器负责对象的创建、管理。

IoC的优点

IoC常见的实现方式

DL是EJB时代的实现方式,现在主流的实现方式是DI

IoC、DI的关系

IoC是一种编程思想,DI是IoC的一种实现方式

IoC的实现机制

镜像问题

核心点:工厂模式+反射机制+工厂方法

主要采用工厂模式实现,通过 的 () 方法获取所需实例,如果实例不存在,会调用 () 主动创建所需实例。

创建实例可以使用构造方法方式,实质是通过反射机制调用构造方法创建实例;也可以通过工厂方法创建实例。

DI的实现原理

镜像问题:是如何实现DI的?

通过 () 获取bean实例时,如果没有对应的实例,会调用 () 创建bean实例。

在填充属性阶段,根据注入模式选择 () 或 () 进行注入,在注入过程中使用 () 获取所需依赖。

AOP 面向切面编程

aop: - 面向切面编程,是面向对象编程的一种补充, 在不改变原有业务逻辑的基础上添加额外的处理。

aop的优点

把和业务逻辑无关的横切逻辑剥离出来,不与业务代码耦合在一起,减少系统中的重复代码,使系统变得高内聚、低耦合,更易维护。

aop常见的应用场景

aop中的主要名词|概念

aop的织入时机 | 方式

提供的2种aop实现

1、 aop

早期版本提供的aop实现,只提供了简单的aop实现,局限多,只能对容器中的bean应用增强,只能对方法进行增强。

_spring的核心机制是_理念体系包括

aop默认使用的代理策略、织入时机

aop的实现原理

2、

是一个专业的aop框架,提供了一套完整的aop解决方案,在的后续版本中集成。比 aop更加强大,可对所有域中的对象进行增强,可对字段、方法、构造方法等内容进行增强。

的织入时机、原理

性能比较

的应用范围更广、性能更好,比 aop更强大,更常用,也更推荐使用。

中的2个核心概念 bean

常见问题

传统的java bean

简单来说就是实体类,用来封装对象,包含成员属性和对应的、方法。

bean

bean是中的核心概念,使用其实是面向bean编程,开发的主要任务就是编写、配置bean。

中的bean有2层含义

容器

实现了IoC的容器都可以叫做IoC容器,容器只是IoC的一种实现,只是IoC容器中的一种,容器 ≠ IoC容器。

容器提供的功能

中2种容器 | 容器的2个核心接口

相关问题:、的联系与区别

一般把 称为低级容器、IoC 容器,把 称为应用上下文、高级容器,通常说的容器是指高级容器 。

容器的实现原理

镜像问题

提供了2个容器

整合了体系的主要接口,功能齐全,常作为低级容器的实现。

实现了加载|刷新配置的 () 方法,是 的主要实现类,也是高级容器最终实现类的共同基类。

高级容器中内置了低级容器,通过内置的低级容器提供IoC容器的基础功能。

中用到的设计模式

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了