spring是什么?

1:是一个轻量级的开源框架,是为解决企业应用开发的复杂性而创建的;

2:是一个三层架构,也为J2EE应用程序开发提供集成的框架;

Web层:Spring MVC;

业务层 :Spring的IoC;

持久层 :Spring的JDBC、ORM、等持久层框架;

3:Spring的核心是:控制反转(IoC)和面向切面编程(AOP);

IoC :控制反转

①:控制反转模式(也称依赖性介入),主要是不创建对象,但是描述创建它们的方式,在代码中不直接与对象和服务连接,但在配文件中描述哪一组件需要哪一个服务;

②:IoC的设计目标是与JavaBean组件一起使用;

③:直接作用在功能的底层;

④:Spring里面最高级的抽象是BeanFactory(对应的是工厂模式);

BeanFactory有两种模式:单态、原型;

单态:查询时对具有特定名称的对象共享实例进行检索;  eg:Singleton

原型:每次检索都会创建单独的对象,(在每个用户都需要自己的对象时,原型模式是最适合的);

后期后面添加案例,方便理解;

DI:依赖注入

DI(依赖注入)这里单独讲,因为DI其实是属于IoC内的一个分支,IoC本质上是一个概念,是一种思想,控制反转就是对对象控制权的转移,SpringIoC容器创建对象,然后将对象的使用权交出去在控制反转中,大致理解成是Spring赋值用的,一般讲到IoC就会降到DI,这边做简单的描述~

AOP :面向切面编程

①:可以说是oop(Object Oriented Programming,面向对象编程)的补充和完善;

(OOP :引入封装、继承、多态等概念来建立一种对象层次结构,用于模拟公共行为的集合,OOP允许开发者定义纵向的关系,但并不适合定义横向的关系,例如日志功能。日志代码往往横向地散布在所有对象层次中,而与它对应的对象的核心功能毫无关系对于其他类型的代码,如安全性,异常处理和透明的持续性也都是如此,这种散布在各处的无关的代码被称为横切(cross cutting),在OOP设计中,它导致了大量代码的重复,而不利于各个模块的重用);

②:AOP用的是和oop相反的一种叫"横切"的技术,打比方,一个类里面同样实现两个方法的那一段,就是将那些影响到多个类的公共行为都封装到一个可重用模块,这就是AOP中的A (Aspect,切面,与业务无关,主要是减少代码的复用);

③:横切把系统分为两个部分:核心关注点 (业务处理的主要流程) 和 横切关注点 (在核心关注点里的多出,各处基本相同);

④:AOP的作用在于分离系统中的各种关注点,将核心关注点和横切关注点分离开来;

⑤ :横切关注点:eg:对哪些方法进行拦截,拦截后的处理;

⑥ :切面 :类是对物体特征的抽象,切面就是对横切关注点的抽象;

⑦ :Spring中AOP代理由Spring的IoC容器负责生成、管理、依赖关系也由IoC容器负责管理(AOP代理可以直接使用容器中的其它bean实例作为目标,这种关系可由IOC容器的依赖注入提供;

⑧:Spring的代理默认使用java动态代理来创建AOP代理,这样可以为任何接口实例创建代理;

⑨:当需要代理的类不是代理接口的时候,Spring会切换为使用CGLIB代理;

CGLIB:就是一个强大的,高性能的代码生成库,主要通过 对字节码的操作为对象引入间接级别,以控制对象的访问);

刚看到的一个博主解释得满不错的,推荐下: https://www.cnblogs.com/csd97/p/8435795.html , 给这个博主点赞,哈哈

Spring AOP支持的AspectJ切入点指示符

切入点指示符用来指示切入点表达式目的,,在Spring AOP中目前只有执行方法这一个连接点,Spring AOP支持的AspectJ切入点指示符如下:

execution:用于匹配方法执行的连接点;

within:用于匹配指定类型内的方法执行;

this:用于匹配当前AOP代理对象类型的执行方法;注意是AOP代理对象的类型匹配,这样就可能包括引入接口也类型匹配;

target:用于匹配当前目标对象类型的执行方法;注意是目标对象的类型匹配,这样就不包括引入接口也类型匹配;

args:用于匹配当前执行的方法传入的参数为指定类型的执行方法;

@within:用于匹配所以持有指定注解类型内的方法;

@target:用于匹配当前目标对象类型的执行方法,其中目标对象持有指定的注解;

@args:用于匹配当前执行的方法传入的参数持有指定注解的执行;

@annotation:用于匹配当前执行方法持有指定注解的方法;

bean:Spring AOP扩展的,AspectJ没有对于指示符,用于匹配特定名称的Bean对象的执行方法;

reference pointcut:表示引用其他命名切入点,只有@ApectJ风格支持,Schema风格不支持。

AspectJ切入点支持的切入点指示符还有: call、get、set、preinitialization、staticinitialization、initialization、handler、adviceexecution、withincode、cflow、cflowbelow、if、@this、@withincode;但Spring AOP目前不支持这些指示符,使用这些指示符将抛出IllegalArgumentException异常。这些指示符Spring AOP可能会在以后进行扩展。

@Before: 前置通知, 在方法执行之前执行
@After: 后置通知, 在方法执行之后执行 。
@AfterRunning: 返回通知, 在方法返回结果之后执行
@AfterThrowing: 异常通知, 在方法抛出异常之后
@Around: 环绕通知, 围绕着方法执行

后期后面添加案例,方便理解;

Spring是干什么的?

1:方便解耦,简化开发;

2:方便的对程序进行拦截、运行、监控等功能;

3:可以对事务声明;

4:属于一个万能的框架,跟很多框架都是百搭;

目录

spring是什么?

Spring AOP支持的AspectJ切入点指示符

Spring是干什么的?

Spring怎么用?


Spring怎么用?

1:Spring的框架其实很好用的,很多都已经封装好了,而且用得很方便,不懂的看着API,或者面向百度都是可以的;

各位路过的帅哥美女,您要是觉得里面有不妥的,您可以说出来,我做一下更正,毕竟这是我的一个理解,也防止广大的CSDN老友被我误入歧途,谢过啦!

Spring是什么?干什么的?怎么用?相关推荐

  1. 你还不知道Spring cloud是干什么的,那你就out了

    客套的话不多说了,直接上干货 首先介绍下Spring cloud是干什么的: Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开 ...

  2. Spring Boot-自动配置之底层原理

    一.SpringBoot启动的时候加载主配置类,开启了自动配置的功能 @SpringBootApplication public class SpringBoot02Application {publ ...

  3. Java认证授权框架Spring Security介绍

    Spring Security 是一个非常强大的身份验证和授权控制框架.为了满足企业项目的不同需求,它提供了很多定制化开发的解决方案,通过简单的调整配置,就能为我们的应用提供一套可靠的安全保障.本节课 ...

  4. Spring Security 基本介绍,初窥路径

    Spring Security 基本介绍和环境搭建 实验介绍 Spring Security 是一个非常强大的身份验证和授权控制框架.为了满足企业项目的不同需求,它提供了很多定制化开发的解决方案,通过 ...

  5. Spring batch教程 之 读取CSV文件并写入MySQL数据库

    原文作者: Steven Haines - 技术架构师 编写批处理程序来处理GB级别数据量无疑是种海啸般难以面对的任务,但我们可以用Spring Batch将其拆解为小块小块的(chunk). Spr ...

  6. Spring框架学习【从入门到精通】

    文章目录 初识Spring框架 时代变迁 Spring的野心 官网 框架组成 核心概念 三大核心组件的关系 主要jar组成 Spring框架两大核心:IoC和DI 概念 IoC DI IoC的XML方 ...

  7. php memcached mysql_php memcached+Mysql(主从)

    /* index.php   程序入口,用来构造sql(如查询,更新) config.php  配置参数(memcache,mysql) init.php    封装memcached操作(memca ...

  8. SMM--Spring

    目录 初识Spring框架 时代变迁 Spring的野心 官网 框架组成 核心概念 三大核心组件的关系 主要jar组成 Spring框架两大核心:IoC和DI 概念 IoC DI IoC的XML方式 ...

  9. 2020级应届生-----------Java面试题持续整理ing(for 秋招)

    自我介绍 面试官,您好.我是**,来自南京邮电大学,是应届硕士生,所学专业是通信与信息系统,今天面试的岗位是******.在校期间,我的成绩还算不错,本科专业排名前20%,研究生专业107人,排名第三 ...

  10. 01--Spring

    前言 (SpringBoot vs Servlet) 1.1 为什么要学习框架? 学习框架的目的在于升级,我们从亲力亲为到组件装配,框架更加易用.简单且高效. 1.2 使用SpringBoot 项目演 ...

最新文章

  1. 图神经网络新课上架:​宾大2020秋季在线课程开课,视频上线B站
  2. 前端学习(3214):state的一个简洁方式
  3. mysql5.7 备份
  4. apk android lite,APKPure Lite
  5. HIT Software Construction Lab6引发出来对锁的问题的探究
  6. Android 进程间通信——Service、Messenger
  7. 拓扑排序所有可能java_拓扑排序获取所有可能序列JAVA实现
  8. inteli211网卡linux驱动,Windows Server 2019安装Intel I211网卡驱动
  9. 仿vista桌面小工具
  10. asp mysql rs.recordcount_asp中rs.recordcount 返回值总是为-1的解决方法
  11. SOAP Action介绍
  12. MACBOOK快捷键输入
  13. matplotlib保存图片去除白边
  14. 蓝桥杯——种植园问题(prev54)
  15. wps指定路径不存在怎么办_wps指定路径不存在怎么办_十万人都不知道键盘上 F1~F12 的作用,你肯定想不到......
  16. [python]pip freeze和pipreqs的区别和使用方法
  17. springboot考研规划系统 毕业设计-附源码541230
  18. html 如何合并表格
  19. 重装系统后开机黑屏显示cannot load file怎么办
  20. glut库更新旧程序无法完成编译问题描述

热门文章

  1. Justice(hdu6557)
  2. 2019天池大数据-全球城市计算AI挑战赛经验分享
  3. IDEA2019 Java连接PostgreSQL数据库实现基础功能增删改查
  4. 网秦发家-隐性的sp赚钱的暴富
  5. 计算机地质模拟,地质过程计算机模拟.ppt
  6. 《Small Memory Software:Patterns For System With Limited Memory》读书笔记
  7. Web Scraping with Python 学习笔记8
  8. [Java|面试] 面试被问Java的动态代理机制,能说说吗
  9. 词嵌入 word embedding
  10. windows找不到文件常见问题