Sping原理
是一个轻量级Java开发框架,最早有Rod 创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题 。它是一个分层的/ full-stack(一站式)轻量级开源框架,为开发Java应用程序提供全面的基础架构支持 。负责基础架构,因此Java开发者可以专注于应用程序的开发 。
是一个全面的、企业应用开发一站式的解决方案,贯穿表现层、业务层、持久层 。但是它仍然可以和其他的框架无缝整合 。
特点
轻量级: 组件大小与开销两方面而言都是轻量的 。完整的框架可以在一个大小只有1M多的JAR文件中发布,并且所需的处理开销也是微不足道的 。此外,是非侵入式,典型案例,应用中的对象不依赖于特定的类
控制反转: 通过控制反转(IOC)技术实现解耦 。一个对象依赖的其他对象会通过被动的方式传递进来,而不需要对象自己创建或者查找依赖 。
面向切面: 支持切面(AOP)编程,并且吧应用业务逻辑和系统服务区分开 。
容器: 包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器 。可以配置每个bean如何被创建、销毁,bean的作用范围是单例还是每次都生成一个新的实例,以及他们是如何相互关联 。
框架集合: 将简单的组件配置,组合成为复杂的框架;应用对象被申明式组合;提供许多基础功能(事务管理、持久化框架继承),提供应用逻辑开发接口
框架优缺点 优点缺点框架中都用到了哪些设计模式
框架中使用到了大量的设计模式,下面列举了比较有代表性的:
核心组件
总共大约有 20 个模块, 由 1300 多个不同的文件构成 。而这些组件被分别整合在核心容器(Core ) 、 AOP()和设备支持() 、数据访问与集成(Data /) 、 Web、 消息() 、 Test等 6 个模块中 。以下是5 的模块结构图:
控制反转(IOC) 控制反转(IOC)概念
控制反转即IOC ( of ),它把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理 。
通过一个配置文件描述 Bean 及 Bean 之间的依赖关系,利用 Java 语言的反射功能(依赖注入DI)实例化 Bean 并建立 Bean 之间的依赖关系 。的 IoC 容器在完成这些底层工作的基础上,还提供 了 Bean 实例缓存、生命周期管理、 Bean 实例代理、事件发布、资源装载等高级服务 。
容器高层视图
启动时读取应用程序提供的 Bean 配置信息,并在容器中生成一份相应的 Bean 配
置注册表,然后根据这张注册表实例化 Bean,装配好 Bean 之间的依赖关系,为上层应用提供准
备就绪的运行环境 。其中 Bean 缓存池为实现
IOC 容器实现 -框架基础设施
是框架的基础设施,面向本身;
面向使用 框架的开发者,几乎所有的应用场合我们都直接使用而非底层的。
面向开发应用
由派生而来,提供了更多面向实际应用的功能 。
继承了 ory 和接口,在此基础
上,还通过多个其他的接口扩展了的功能:
和 有什么区别?
和是的两大核心接口,都可以当做的容器 。其中是的子接口 。
依赖关系
:是里面最底层的接口,包含了各种Bean的定义,读取bean配置文档,管理bean的加载、实例化,控制bean的生命周期,维护bean之间的依赖关系 。
:接口作为的派生,除了提供所具有的功能外,还提供了更完整的框架功能:
加载方式
:采用的是延迟加载形式来注入Bean的,即只有在使用到某个Bean时(调()),才对该Bean进行加载实例化 。这样,我们就不能发现一些存在的的配置问题 。如果Bean的某一个属性没有注入,加载后,直至第一次使用调用方法才会抛出异常 。