Spring系列

2021银四奉上最强干货:Spring全家桶(脑图/面试/进阶学习) 撸了35天,奉上最强干货“全家桶”脑图+面试+进阶学习:Spring+Cloud+Security+Boot+MVC+Spring5,且全篇分为以下三个部分: 脑图篇 面试篇 进阶学习篇 阅读前请注意:这是迄今最全的Spring相关全家桶,脑图+面试+进阶学习,全文篇幅有点长,但干货满满,请仔细阅读!且全文提及的全部手绘脑图的原件、面试解析的原件、进阶学习的笔记PDF原件等全部都可免费分享感兴趣认可你的——100%免费分享请直接点击传送门即可!! 第一篇:脑图篇 1.1 手绘 Sprin. 阅读详情

Spring

  1. 是一个分层的一站式轻量级框架;
  2. spring属于低侵入式设计,代码的污染极低;
  3. spring的DI(依赖注入)机制将对象之间的依赖关系交由框架处理,减低组件的耦合性;
  4. Spring提供了AOP技术,支持将一些通用任务,如安全、事务、日志、权限等进行集中式管理,从而提供更好的复用。
  5. spring对于主流的应用框架提供了集成支持。
    • 涉及到的注解:
      • 声明bean的注解
        • @Controller 在展现层使用,控制器的声明(控制层)
        • @Service 在业务逻辑层使用(service层)
        • @Repository 在数据访问层使用(dao层)
        • @Component 组件,没有明确的角色
      • 注入bean的注解(一般用在属性上,也可以用在set方法上)
        • @Autowired:由Spring提供
        • @Resource:由JSR-250提供
      • java配置类相关注解
        • @Bean 注解在方法上,声明当前方法的返回值为一个bean(方法上)
        • @Configuration 声明当前类为配置类,其中内部组合了@Component注解,表明这个类是一个bean(类上)
        • @ComponentScan 用于对Component(组件)进行扫描(类上)
        • @WishlyConfiguration 为@Configuration与@ComponentScan的组合注解,可以替代这两个注解
      • 切面(AOP)相关注解(通知注解见下文)
        • @Aspect 声明一个切面(类上)
        • @PointCut 声明切点
      • SpringMVC注解
        • @RequestMapping 用于映射Web请求,包括访问路径和参数(类或方法上)
        • @ResponseBody 支持将返回值放在response内,而不是一个页面,通常用户返回json数据(返回值旁或方法上)
        • @RequestBody 允许request的参数在request体中,而不是在直接连接在地址后面。(放在参数前)
        • @RestController 该注解为一个组合注解,相当于@Controller和@ResponseBody的组合,注解在类上,意味着,该Controller的所有方法都默认加上了@ResponseBody。
      • Springboot注解
        • @Configuration 用于定义配置类,指出该类是 Bean 配置的信息源
        • @EnableAutoConfiguration 允许 Spring Boot 自动配置注解
        • @SpringBootApplication 等同于同时使用@Configuration、@EnableAutoConfiguration和@ComponentScan及其默认属性。
      • @Cacheable
        • @Cacheable可以标记在一个方法上,也可以标记在一个类上。当标记在一个方法上时表示该方法是支持缓存的,当标记在一个类上时则表示该类所有的方法都是支持缓存的。对于一个支持缓存的方法,Spring会在其被调用后将其返回值缓存起来,以保证下次利用同样的参数来执行该方法时可以直接从缓存中获取结果,而不需要再次执行该方法。Spring在缓存方法的返回值时是以键值对进行缓存的,值就是方法的返回结果,至于键的话,Spring又支持两种策略,默认策略和自定义策略,这个稍后会进行说明。需要注意的是当一个支持缓存的方法在对象内部被调用时是不会触发缓存功能的。@Cacheable可以指定三个属性,value、key和condition。
      • @CachePut
        • 与@Cacheable不同的是,@CachePut不会取检查缓存中是否存在,而是直接执行方法,然后结果入缓存(只存不用)。
      • @CacheEvict
        • 是用来标注在需要清除缓存元素的方法或类上的。当标记在一个类上时表示其中所有的方法的执行都会触发缓存的清除操作。@CacheEvict可以指定的属性有value、key、condition、allEntries和beforeInvocation。其中value、key和condition的语义与@Cacheable对应的属性类似。即value表示清除操作是发生在哪些Cache上的(对应Cache的名称);key表示需要清除的是哪个key,如未指定则会使用默认策略生成的key;condition表示清除操作发生的条件。下面我们来介绍一下新出现的两个属性allEntries和beforeInvocation。

Spring的AOP和IOC

  • AOP:核心:动态代理
    • 例子:
      • 事务管理(spring 的事务就是用AOP实现的,xml文件形式是JDK代理,因为有接口,否则是Cglib代理)
      • 权限验证
    • 提高了功能代码的重用性和可维护性。
    • Spring框架的AOP机制可以让开发者把业务流程中的通用功能抽取出来,单独编写功能代码。在业务流程执行过程中,Spring框架会根据业务流程要求,自动把独立编写的功能代码切入到流程的合适位置。
    • Spring AOP并不是一套完整的AOP方案,例如在spring事务管理中,会有AOP自调用问题,但是spring AOP可以应对大部分的情况。如果需要完整的AOP方案,可以使用AspectJ。
      在这里插入图片描述
    • 切面,切点,连接点,(织入),通知。
      • 切面:切面是通知和切入点的结合。(切面类一定要交给spring管理)
        @Aspect //声明切面,标记类
      • 切点:需要在前后添加通知操作的业务方法
        @Pointcut(“execution(* *.perform(…))”) //定义切点,标记方法
      • 连接点:连接点可以说是切点的全集,可以引入通知的地方都是连接点(不用太过关心连接点)
      • 通知:横向抽取出来的操作
      //下列注解默认属性pointcut(连接点)
      @Before("execution(void *User(..))") //前置通知
      @AfterReturning("execution(void *User(..))") //后置通知
      @Around("execution(void *User(..))")//环绕通知
      @AfterThrowing("execution(void *User(..))")//异常通知
      @After("execution(void *User(..))")//最终通知
      
  • IOC
    • 简要说明:IOC核心思想是依赖注入(DI)或控制反转(IOC),就是指通过引入IOC容器,利用依赖关系注入的方式,实现对象之间的解耦。
    • 解释:以往的方式是不管会不会用到,先将需要的对象new好,这样就造成资源的浪费,而且如果其中一个对象new的时候出现问题,那么不管用不用到这个对象,程序都会受到影响,也就是耦合度较高。IOC容器技术就是需要的时候就注入,不需要的时候就不注入。这样就将类和对象解耦,一个对象有问题,没有使用到这个对象的地方依然可以正常运行。注入的主要方式有:set注入,构造器注入,注解注入。
    • 优点:实现对象之间的解耦。
    • 缺点:
      • 由于IOC容器生成对象是通过反射方式,在运行效率上有一定的损耗(反射创建对象的速度大概是正常生成对象速度的1-2倍),所以对于强调运行效率的项目,不太适用IOC容器技术。
      • 对于IOC框架产品(比如:Spring)来讲,需要配置工作,对于一些小的项目而言,客观上也可能加大一些工作成本。

SpringMVC

Spring MVC 提供了一种分离式的方法来开发 Web 应用。通过运用像 DispatcherServelet(前端控制器)和 ViewResolver(视图解析器) 等一些简单的概念,开发 Web 应用将会变的非常简单。

  • 工作流程
    1. 用户发送请求至前端控制器DispatcherServlet
    2. DispatcherServlet收到请求调用HandlerMapping处理器映射器。
    3. 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
    4. DispatcherServlet通过HandlerAdapter处理器适配器调用处理器
    5. 执行处理器(Controller,也叫后端控制器)。
    6. Controller执行完成返回ModelAndView
    7. HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
    8. DispatcherServlet将ModelAndView传给ViewReslover视图解析器
    9. ViewReslover解析后返回具体View
    10. DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
    11. DispatcherServlet响应用户
      SpringMVC的工作流程
  • 主要组件
    1. 前端控制器 DispatcherServlet(不需要程序员开发):接收请求、响应结果,相当于转发器,有了DispatcherServlet 就减少了其它组件之间的耦合度。
    2. 处理器映射器HandlerMapping(不需要程序员开发):根据请求的URL来查找Handler
    3. 处理器适配器HandlerAdapter(手写路径):在编写Handler的时候要按照HandlerAdapter要求的规则去编写,这样适配器HandlerAdapter才可以正确的去执行Handler。
    4. 处理器Handler(需要程序员开发):具体调用模块处理请求。
    5. 视图解析器 ViewResolver(不需要程序员开发):进行视图的解析,根据视图逻辑名解析成真正的视图(view)
    6. 视图View(前端开发):View是一个接口, 它的实现类支持不同的视图类型(jsp,html,vue等等)
  • springMVC和struts2的区别
    1. springmvc的入口是一个servlet即前端控制器(DispatchServlet),而struts2入口是一个filter过虑器(StrutsPrepareAndExecuteFilter)。
    2. springmvc是基于方法开发(一个url对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。

SpringBoot

  • 特点:

    • 快速构建项目。(最主要的作用)
    • 对主流开发框架的无配置集成。
    • 项目可独立运行,无须外部依赖Servlet容器。
    • 提供运行时的应用监控。
    • 极大地提高了开发、部署效率。
    • 支持各种开发工具,如 IntelliJ IDEA,Eclipse
  • springboot的上下文环境:Environment

    • Environment这个概念是与spring的容器container集成在一起的一个抽象概念。主要为我们的应用程序环境的两个方面的支持:profiles and properties。
    • 配置文件中的属性之所以能被程序发现并使用,是因为spring boot在启动时已经帮我们把这些值都放在了Spring的Environment里面了。
      • 配置文件读取顺序
      1. 在jar包的同一目录下建一个config文件夹,然后把配置文件放到这个文件夹下。
      2. 直接把配置文件放到jar包的同级目录。
      3. 在classpath下建一个config文件夹,然后把配置文件放进去。
      4. 是在classpath下直接放配置文件(默认的yml文件和properties文件其实是优先级最低的)。
    • profile的概念:profile的作用就是符合这个给定profile配置的bean的集合。我们在定义一个bean的时候是可以将其分配到一个指定的profile(如注解方式指定bean时可以使用@Profile注解来指定)。当有多个profile存在时,我们可以指定哪一个profile生效(active),不指定spring会根据默认的profile去运行。
  • 组件

    • Spring Actuator:监视应用程序及交互
    • Spring Initializer:Spring Initializer是一个网络应用程序,它可以生成一个Spring Boot项目,包含快速启动所需的一切。和往常一样,我们需要一个好的项目框架;它有助于你正确创建项目结构/框架。
  • jar包启动的执行命令:
    nohup java -jar *.jar --spring.config.location=config/application.properties >*.log&

    • nohup ==> 守护进程
    • java -jar *.jar ==> jar包启动
    • –spring.config.location=配置文件路径 ==> 指定jar包读取的外部配置文件路径
    • >*.log ==> 日志输出位置
    • & ==> 守护进程(仅当前连接linux终端用户在线时,一旦该用户断开连接,项目将自动停止,因此需要使用nohup)
  • springboot自动装配:

    • springboot帮我们引入了208种可以自动装配的框架springboot自动装配
    • 但是对于mybatis,并没有被集成到其中,因此需要在pom文件中手动添加mybatis与springboot集成依赖

SpringCloud

  • Eureka——各个服务启动时,Eureka Client都会将服务注册到Eureka Server,并且Eureka Client还可以反过来从Eureka Server拉取注册表,从而知道其他服务在哪里
  • Ribbon——服务间发起请求的时候,基于Ribbon做负载均衡,从一个服务的多台机器中选择一台
  • Feign——基于Feign的动态代理机制,根据注解和选择的机器,拼接请求URL地址,发起请求
  • Hystrix——发起请求是通过Hystrix的线程池来走的,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题
  • Zuul——如果前端、移动端要调用后端系统,统一从Zuul网关进入,由Zuul网关转发请求给对应的服务
保姆级教程:用LoRA微调Chinese-Mistral-7B模型,并一键部署到Ollama(附完整代码) 本文提供了一份详细的LoRA微调Chinese-Mistral-7B模型的保姆级教程,涵盖环境配置、数据预处理、微调实战、模型量化及Ollama部署全流程。通过实战案例和完整代码,帮助开发者快速构建专属中文大模型,适用于医疗、法律等垂直领域。 阅读详情

相关推荐

静止无功补偿SVG的基本控制原理

上图是自励单变量控制框图,基本控制方式为,采集计算得到负载无功电流和SVG输出的无功电流的差值,经过PI调节作为功率角δ和固定的调制深度λ和调制波,经过PWM调制形成开关信号驱动SVG的功率电路。该控制方式使保持调制深度λ(即SVG电压的幅度)不变,通过调整δ来调整直流电压和无功,跟踪输出无功功率,直流电压就会大幅度随动,无功相应速度较慢。SVG通常有他励方式和自励方式,他励方式需要提供外部的直流电源,自励方式通过电网输出有功功率至SVG建立SVG的直流电压。δ为Us和Uc之间的相角差。

weixin_42668920的博客 1993

Spring系列(一)、Spring入门及七大模块

1 Spring概述 1.1 什么是Spring? Spring是一个轻量级Java开发框架,最早由Rod Johnson创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的JavaSE/JavaEE full-stack(全栈-一站式)轻量级开源框架,为开发Java应用程序提供全面的基础框架支持。Spring负责基础架构,因此Java开发者可以专注于应用程序的开发。 Spring最根本的使命是解决企业级应用开发的复杂性,即简化Java开发。 Spring可以做很多事情,它为企

一宿君 1614

生成式引擎优化(GEO)全景指南:技术架构、实施策略与未来趋势

生成式引擎优化(GEO)全景指南摘要 GEO(生成式引擎优化)是针对AI生成内容(如ChatGPT、文心一言等)的优化策略,通过结构化数据、权威建设与语义优化提升企业内容在AI答案中的引用优先级,实现“无点击曝光”。其核心价值在于从流量竞争转向信任构建,突破传统SEO局限。技术架构依托RAG(检索增强生成)、向量数据库及反馈学习机制,动态优化内容生成与引用逻辑。实施策略包括:部署结构化数据(如JSON-LD)、维护动态知识图谱、适配多模态内容(3D/VR)、联合权威机构发布白皮书。行业案例显示,美妆、智能家

解锁AI流量新红利!🚀 GEO优化(生成引擎优化)助您掌控AI搜索,让AI成为您的品牌最佳代言人! 1454

Spring系列一:Spring基础篇

有人说,“Java程序员都是Spring程序员”,本人不太赞成这个观点,但是这也可以看出Spring在Java世界里举足轻重的作用。

退役复学在校大学生,目光所至,皆为华夏 4万+

通达信强龙趋势幅图指标 - 精准捕捉趋势,把握强势行情,多角度分析个股,强弱一目了然

STICKLINE(趋势>0 AND SJTJ,4.8,5.8,1.5,0),COLORYELLOW;STICKLINE(资金>0 AND SJTJ,1.2,2.2,1.5,0),COLOR0080FF;STICKLINE(异动>0 AND SJTJ,0,1,1.5,0),COLORFF0080;STICKLINE(异动=0 AND SJTJ,0,1,1.5,1),COLORGRAY;

Q1809330692的博客 5643

软件测试方法——等价类划分法详解

!如果下面这些资料用得到的话可以直接拿走:1、自学开发或者测试必备的完整项目源码与环境2、测试工作中所有模板(测试计划、测试用例、测试报告等)3、软件测试经典面试题4、Python/Java自动化测试实战.pdf5、Jmeter/postman接口测试全套视频获取6、Python学习路线图。

MXB1220的博客 1万+

【Spring全家桶系列】- 开篇 Spring 全栈技术概览

【Spring全家桶-初识篇-Spring Framework IOC&AOP】第一节. Spring 全家桶概述 说到Spring全家桶,我认为我们应该从JavaEE的发展历程说起。 从1999、2000年起,J2EE开始大行其道,那时候,很多大型公司都开始使用J2EE进行企业级的开发。 2005年,笔者刚刚大学毕业,因为学的软件工程,自然就进入了软件行业,第一个项目是在一家外企为...

码界领航的Cherry Yang的博客 5429

第14.5章 高翔博士最新开源框架Lightning-LM源码解读(五):揭秘位姿图优化核心模块,从数学原理到代码实现

本文介绍了Lightning-LM框架中的位姿图优化(PGO)模块实现。该模块通过融合多源定位信息(激光定位、激光里程计、DR等),构建并优化位姿图来获得更精确的位姿估计。 主要内容包括: 模块概况与数据流程:初始化配置→添加PGO帧→分配位姿→优化求解→更新位姿→滑动窗口 16个核心函数详解:从构造函数到边缘化处理,涵盖完整的PGO工作流程 关键技术点:噪声参数设置、优化问题构建、约束添加、异常值处理等 关键数据结构:帧队列管理、顶点和边构建、优化统计信息收集 该PGO模块采用增量式优化方式,支持多种约束

行知SLAM 1217

Spring 从入门到精通系列 01 —— Spring概述与体系结构总结

文章目录一、Spring概述1.1 Spring 是什么1.2 Spring 的优势1.3 spring 的体系结构1.3.1 Core Container 核心容器1.3.2 Data Access/Integration 数据访问/集成1.3.3 Web1.3.4 其他二、程序的耦合及解耦2.1 程序的耦合2.2 工厂模式解耦 一、Spring概述 1.1 Spring 是什么   Spring是分层的 Java SE/EE应用 full-stack 轻量级开源框架,以 IOC(Inverse ..

秀岩的博客 979

H2db console 未授权访问RCE 漏洞复现+利用(CVE-2022-23221)

H2 数据库控制台中的另一个未经身份验证的 RCE 漏洞,在 v2.1.210+ 中修复。2.1.210 之前的 H2 控制台允许远程攻击者通过包含 IGNORE_UNKNOWN_SETTINGS=TRUE;INIT=RUNSCRIPT 子字符串的 jdbc:h2:mem JDBC URL 执行任意代码。

0xSec 4553

Skills入门学习路线

简单来说,Skills就像是给Claude准备的”插件包"或”工具箱”。它是一个集合,里面装了特定的操作指令(Instructions)、可执行脚本(Scripts)和相关素材(Resources)。2025 年 10 月中旬,Anthropic 正式发布 Claude Skills。两个月后,Agent Skills 作为开放标准被进一步发布,意在引导一个新的 AI Agent 开发生态。OpenAI、Github、VS Code、Cursor 均已跟进。为了更好的理解,你可以把。

十二测试录 1100

【Spring】Spring Boot 系列文章

Spring Boot系列文章

527

Codex 实战 Skills:自动采集一天之内的 Git 提交,一键排版成精美工作日报并发送邮件

特性手动撰写脚本辅助(仅聚合)AI 增强自动化(本文方案)时间成本高(30-60分钟/天)中(5-10分钟/天)低(<1分钟/天)内容质量依赖个人总结能力原始数据堆砌,缺乏提炼专业、结构化、有业务视角信息完整性易遗漏完整,但难以阅读完整,且经过分类筛选维护成本无低中(需维护 Skill 配置)可扩展性低中高(可轻松添加周报、月报)适用场景所有开发者初级开发者追求效率的高级开发者本文详细介绍了一种基于 Codex Agent Skills 的自动日报生成方案。

yueyeguzhuo的专栏 103

Spring系列之-Aware系列接口

Spring系列之-Aware系列接口

qq_40091033的博客 116

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Spring高手系列目录

很多人感叹“学习无用”,实际上之所以产生无用论,是因为自己想要的与自己所学的匹配不上,这也就意味着自己学得远远不够。无论是学习还是工作,都应该有主动性,所以如果拥有大厂梦,那么就要自己努力去实现它。最后祝愿各位身体健康,顺利拿到心仪的offer!由于文章的篇幅有限,所以这次的蚂蚁金服和京东面试题答案整理在了PDF文档里)][外链图片转存中…(img-OE0FeIIx-1716356478546)][外链图片转存中…(img-yCUCFwOk-1716356478546)]

2401_85191085的博客 1162

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Spring5系列——带你走进Spring大门!

Spring5系列——带你走进Spring大门!

qq_41490913的博客 162

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Spring源码系列文章

Spring源码系列文章

qq_40091033的博客 230

Spring系列之Spring常用注解总结

Spring系列之Spring常用注解总结

Leon_ang的博客 529

Spring 系列注解

目录一、Spring IOC、DI 1.Spring IOC、DI 概念2.使用方法(1)[IOC](2)[DI](3)使用成员变量(4)完整代码 (5)分析(5.1)类的定义(5.2)依赖注入(5.3)请求映射二、Spring MVC 1.Spring MVC 常用注解2.注册Controller[也是一种Bean]3.注册HTTP Method 处理函数4.注册Service[也是一种Bean]5.Spring MVC 注解使用(1)注册Controller(2)注册处理函数(3)使用Controlle

m0_74800495的博客 1256

Spring 源码学习系列汇总

Spring 系列的文章目录,后续Spring相关文章都会更新到本文,方便大家查阅。

程序员囧辉 5967

Spring系列学习汇总

持续更新!!! 路漫漫其修远兮,吾必将上下求索~ 如果你认为i博主写的不错!写作不易,请点赞、关注、评论给博主一个鼓励吧**转载请注明出处哦**

大鱼的博客 1513

你要的《Spring系列源码解读》PDF它来了

你要的《Spring系列源码解读》PDF它来了

qq_41490913的博客 262

Spring系列文章导航

计划完成一个Spring系列文章

H.C. Lee的博客 483

Spring使用篇系列博客传送门

  Spring使用篇系列博客暂时告一段落,关于Spring的基础操作学习暂告一段落,日后可能会有所更新,现在做一个总结,方便大家阅读学习。   同时,该系列博客中涉及到的所有演示项目,均上传到了GitHub中,有需要可以去查看GitHub项目地址:Spring_Demo. MyBatis使用篇(一)—— 初始MyBatis. ...

王喆峰的博客 524

注解及Spring系列注解

1.定义:使用@interface2.定义属性:类名+名字()3.赋默认值:default + 默认值4.修饰:使用需要的元注解注解为代码提供元数据,用于标记、约束、文档化和框架集成,可被编译器或运行时处理。熟练运用注解,可以提高开发的效率。

m0_75014903的博客 1130

Spring实战系列

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.youkuaiyun.com/SunnyYoona/article/details/50603494 Spring实战系列 [Spring实战系列]Eclips...

weixin_34209406的博客 74
上一篇: JavaSE(扩展学习,面试可能问到)
下一篇: 数据库事务的隔离级别
fufucen
博客等级 码龄8年 2粉丝 36原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值