根据多个参考资料,总结如下:

Spring的概念

  Spring是一种多层的J2EE应用程序框架,其核心就是提供一种新的机制管理业务对象及其依赖关系。它是一种容器框架,用于创建bean,维护bean之间的关系,它可以管理web层,持久层,业务层等,可以配置各个层的组件并且维护各个层的关系

Spring特点

  (1)轻量级:轻量级是针对重量级容器(EJB)来说的,Spring的核心包就不到1M大小,而使用Spring的核心包所需的资源也很小,所以可以在小型设备中使用。  

  (2)非入侵式:Spring目标是一个非入侵式的服务框架。原因是所有框架都是提供大量的功能供用户去使用,从而简化开发时间和成本,但由于大量的使用了框架的API,使应用程序和框架发生了大量的依赖性,无法从框架中独立出来,更加无法使程序组件在其他程序中使用。

  (3)容器:Spring提供了容器功能,容器可以管理对象的生命周期、对象与对象间的关系、我们可以通过编写XML来设置对象关系和初始值,这样容器在启动之后,所有的对象都直接可以使用,不用编写任何编码来产生对象。Spring有两种不同的容器:Bean工厂以及应用上下文

Spring工作原理

  Spring内部最核心的就是IOC了,动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射,反射其实就是在运行时动态的去创建、调用对象,Spring就是在运行时,跟xml Spring的配置文件来动态的创建对象和调用对象里的方法的 。

  Spring还有一个核心就是AOP面向切面编程,可以为某一类对象进行监督和控制(也就是在调用这类对象的具体方法的前后去调用你指定的模块)从而达到对一个模块扩充的功能。这些都是通过配置类达到的。

  Spring目的:就是让对象与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置类说明管理的(Spring根据这些配置 内部通过反射去动态的组装对象)

   要记住:Spring是一个容器,凡是在容器里的对象才会有Spring所提供的这些服务和功能。

     Spring里用的最经典的一个设计模式就是:模板方法模式。

spring 的2个核心技术:

ioc/di:控制反转/依赖注入

  【内部最核心的就是IOC了,动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射,反射其实就是在运行时动态的去创建、调用对象,Spring就是在运行时,跟xml Spring的配置文件来动态的创建对象,和调用对象里的方法的 。】

  所谓IoC(控制反转),对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。

  IoC的一个重点(DI 依赖注入)是在系统运行中,动态的向某个对象提供它所需要的其他对象(因此又叫DI)。如对象A定义一个引用B(对象),至于这个B对象怎么构造,何时构造,A不需要知道。在系统运行时,spring会在适当的时候制造一个B对象,然后像打针一样,注射到A当中,这样就完成了对各个对象之间关系的控制。A需要依赖B才能正常运行,而这个B是由spring注入到A中的,依赖注入的名字就这么来的。DI原理:Java 1.3之后一个重要特征是反射(reflection),它允许程序在运行的时候动态的生成对象、执行对象的方法、改变对象的属性,spring就是通过反射来实现注入的。

  没有spring时:在一个对象中,如果要使用另外的对象,就必须得到它(自己new一个,或者从JNDI中查询一个),使用完之后还要将对象销毁(比如Connection等),对象始终会和其他的接口或类藕合起来。

  有spring时:所有的类都会在spring容器中登记,告诉spring你是个什么东西,你需要什么东西,然后spring会在系统运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你的东西。所有的类的创建、销毁都由 spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以这叫控制反转。

aop:面向切面:

  AOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。

  AOP的核心思想就是“将应用程序中的商业逻辑同对其提供支持的通用服务进行分离。”

  AOP把软件系统分为两个部分:核心关注点和横切关注点。业务处理的主要流程是核心关注点,与之关系不大的部分是横切关注点。横切关注点的一个特点是,他们经常伴随在核心关注点前后使用,而各处都基本相似。比如权限认证、日志、事务处理。

  AOP技术,利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其名为“Aspect”,简单地说,就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。实现AOP的技术,主要分为两大类:一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;二是采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码。Spring采用动态代理织入,而AspectJ采用编译器织入和类装载期织入。

  Spring AOP使用了两种动态代理机制:一种是基于JDK的动态代理,一种是基于CGLib的动态代理。JDK1.3以后,java提供了动态代理技术,允许开发者在运行期间动态的创建接口的代理实例,JDK的动态代理主要涉及到java.lang.reflect包中的两个类:Proxy和InvocationHandler。CGLib采用非常底层的字节码技术,可以为一个类创建子类,并在子类中采用方法拦截的结束拦截所有父类方法的调用,并顺势织入横切逻辑。

spring的基本用法:

1、关于spring容器:
  spring容器是Spring的核心,该容器负责管理spring中的java组件,
  ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");//这种方式实例化容器,容器会自动预初始化所有Bean实例
  ctx.getBean("beanName");
  ApplicationContext 实例正是Spring容器。
  ApplicationContext容器默认会实例化所有的singleton Bean
  Spring容器并不强制要求被管理组件是标准的javabean。

2、Spring的核心机制:依赖注入。
  不管是依赖注入(Dependency Injection)还是控制反转(Inversion of Conctrol),其含义完全相同:
  当某个java实例(调用者)需要调用另一个java实例(被调用者)时,传统情况下,通过调用者来创建被调用者的实例,通常通过new来创建,
  而在依赖注入的模式下创建被调用者的工作不再由调用者来完成,因此称之为"控制反转";创建被调用者实例的工作通常由Spring来完成,然后注入调用者,所以也称之为"依赖注入"。

3、依赖注入一般有两种方式:
  设置注入:IoC容器使用属性的setter方式注入被依赖的实例。<property name="" ref="">
  构造注入:IoC容器使用构造器来注入被依赖的实例。<constructor-arg ref="">
  配置构造注入的时候<constructor-arg>可以配置index属性,用于指定该构造参数值作为第几个构造参数值。下标从0开始。

参考(很全面):https://blog.csdn.net/y13530828499/article/details/6648155

Spring特点与工作原理相关推荐

  1. Spring MVC的工作原理,我们来看看其源码实现

    前言 开心一刻 晚上陪老丈人吃饭,突然手机响了,我手贱按了免提--哥们:快出来喝酒!哥几个都在呢!我:今天不行,我现在陪老丈人吃饭呢.哥们:那你抓紧喝,我三杯白酒,把我岳父放倒了才出来的,你也快点.看 ...

  2. 请谈一下Spring MVC的工作原理是怎样的?

    请谈一下Spring MVC的工作原理是怎样的? ①客户端的所有请求都交给前端控制器DispatcherServlet来处理,它会负责调用系统的其他模块来真正处理用户的请求. ②DispatcherS ...

  3. Spring MVC的工作原理和机制

    Spring  MVC的工作原理和机制 参考: springMVC 的工作原理和机制 - 孤鸿子 - 博客园 https://www.cnblogs.com/zbf1214/p/5265117.htm ...

  4. Spring框架的工作原理

    Spring框架是一个开源的Java平台,它为容易而快速的开发出耐用的Java应用程序提供了全面的基础设施.完成基础阶段的学习后,就会开始接触框架的知识,接下来就给大家简单讲解Spring框架的工作原 ...

  5. 阿里P7工作总结:Spring MVC的工作原理,看完受益匪浅

    这篇文章将深入探讨Spring框架的一部分--Spring Web MVC的强大功能及其内部工作原理. 项目安装 在本文中,我们将使用最新.最好的Spring Framework 5.我们将重点介绍S ...

  6. spring boot actuator工作原理之http服务暴露源码分析

    spring boot actuator的官方文档地址:https://docs.spring.io/spring-boot/docs/current/reference/html/productio ...

  7. Spring IOC的工作原理

    原理 IOC(控制反转),就是由spring来负责控制对象的生命周期和对象间的关系.举个现实生活中的例子,找女朋友,通常情况下,我们要到处去找好看的mm,然后打听他们的爱好.qq.微信.电话,想办法认 ...

  8. Spring Security内部工作原理

    定义 Spring 安全性是 Spring提供的一个框架,有助于自定义访问和身份验证过程.它在保护应用程序方面起着非常关键的作用. Spring 安全性,主要侧重于身份验证和授权,为 Java 应用程 ...

  9. Spring AOP 的工作原理

    概念 IOC负责将对象动态的注入到容器,从而达到一种需要谁就注入谁,什么时候需要就什么时候注入的效果,可谓是招之则来,挥之则去.想想都觉得爽,如果现实生活中也有这本事那就爽歪歪了,至于有多爽,各位自己 ...

最新文章

  1. DevExpress控件使用系列--ASPxUploadControl(图片上传及预览)
  2. IOS基础之NSString,NSMutableString,NSArray的基本使用
  3. 在ubuntu中使用MYBASE
  4. 前端学习(3060):vue+element今日头条管理-处理展示文章封面
  5. 免费语音软件可以导入你在飞鸽传书2008
  6. android sendmessage和post的区别,Handler的sendMessage和postDelay的区别
  7. ASP.NET MVC4 IN ACTION学习笔记-第六波[Ajax in ASP.NET MVC][3/3]
  8. DOS的古董美(未完待續)
  9. 数据分析中会常犯哪些错误,如何解决? 四
  10. 计算机内存不足无法打印照片,打印机内存不足无法打印怎么办_打印机提示内存不足怎么解决...
  11. ps盖印图层在哪里_盖印图层在哪
  12. 物体识别基本原理及其Python实现
  13. STM32操作增量式编码器(二)----使用编码器接口实现定位
  14. 数据库习题(教材:刘爽英清华大学出版社版)
  15. 反垃圾邮件组织spamhaus黑名单移除说明
  16. ROS2利用cartographer算法进行激光建图
  17. 美术0基础想转行做游戏美术3D,如何快速入行?
  18. shopify是什么_Shopify与WooCommerce –哪个是更好的平台? (比较)
  19. git stash命令之暂存的操作
  20. 视频AVI如何批量快速转换成MP4格式

热门文章

  1. su - oracle和su oracle 的区别
  2. 5-2 学习打卡(11.7)
  3. Android 9.0 设置讯飞语音引擎为默认tts语音播报引擎
  4. python随机库函数_python标准库中的随机分布函数
  5. TensorFlow CTPN Demo Windows 无痛搭建
  6. STM32---外部中断
  7. 菜菜学paddle第六篇:利用LeNet卷积神经网络识别手写数字
  8. 同步系统时间与硬件时钟
  9. 核密度聚类(一)核函数、核密度估计、核密度聚类
  10. Bootstrap实现表格分页