热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SPRING_Spring实战

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Spring实战相关的知识,希望对你有一定的参考价值。本博客是参考Spring实战第四版,对其中重要的知识点进行总结。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Spring实战相关的知识,希望对你有一定的参考价值。


本博客是参考Spring实战第四版,对其中重要的知识点进行总结。




  • Spring是如何简化java开发的?

答:(1)基于POJO的轻量级和最小侵入性编程;(2)通过依赖注入和面向接口来松耦合;(3)基于切面和惯例进行声明式编程;(4)通过切面和模板来减少样板式代码;




  • 配置Spring容器三种主要的装配机制?

答:(1)在XML中显示配置;(2)在java中进行显示配置;(3)隐式的bean发现机制和自动装配;




  • Spring从两个角度来实现自动化装配?

答:(1)组件扫描:Spring会自动发现上下文中所创建的bean;(2)自动装配:Spring自动满足bean之间的依赖;




  • Spring依赖注入DI的功能是如何实现的?

答:任何一个有实际意义的应用都会由两个或者多个类组成,这些类之间相互协作来完成特定的业务逻辑。按照传统的做法,每个对象负责管理与自己相互协作的对象的引用,这样会导致高度耦合并难以测试。例如如下代码:

技术分享图片

可以看到,DamselRescuingKnight在它的构造函数中创建了RescueDamselQuest。这使得DamselRescuingKnight紧密的和RescueDamselQuest耦合到了一起,因此就极大的限制了这个骑士探险的能力。而通过DI,对象的依赖关系将由系统中协调各对象的第三方组件在创建对象的时候进行设定。对象无需自己创建或者管理他们的依赖关系。技术分享图片

技术分享图片

我们可以看到,不同于之前的DamselRescuingKnight,BraveKnight没有没有自行创建探险任务,而是在探险的时候把任务作为参数传入。




  • 观察Spring是如何工作的?

答:Spring通过应用上下文(Application Context)装载bean的定义并把他们组装起来。Spring上下文全权负责对象的创建和组装。

技术分享图片




  • AOP应用?

技术分享图片

正如你所看到的,Minstrel是只有两个方法的简单类。在骑士探险之前或者之后都会调用相应的函数。接下来我们该如何把吟游诗人和骑士探险结合起来呢?如果是如下方式调用,

技术分享图片这样就到时每次骑士进行探险都要命令吟游诗人去给他进行记录,这样合理吗?所以我们利用AOP,你可以声明吟游诗人必须去歌颂骑士探险,而骑士不需要去管吟游诗人。将Minstrel声明一个切面。

技术分享图片




  • Spring帮助我们管理Bean分为两个部分,一个是注册Bean,一个装配Bean。

答:完成这两个动作有三种方式,一种是使用自动配置的方式、一种是使用JavaConfig的方式,一种就是使用XML配置的方式。在自动配置的方式中,使用@Component去告诉Spring,我是一个bean,你要来管理我,然后使用@AutoWired注解去装配Bean(所谓装配,就是管理对象直接的协作关系)。然后在JavaConfig中,@Configuration其实就是告诉spring,spring容器要怎么配置(怎么去注册bean,怎么去处理bean之间的关系(装配))。那么久很好理解了,@Bean的意思就是,我要获取这个bean的时候,你spring要按照这种方式去帮我获取到这个bean。到了使用xml的方式,也是如此。均不见标签就是告诉spring怎么获取这个bean,各种就是手动的配置bean之间的关系。如下图分别是三种方式的代码:

技术分享图片技术分享图片技术分享图片




  • 配置profile bean?

答:Spring为环境相关的bean所提供的解决方案其实与构建时的方案没有太大区别。当然,在这个工程中需要根据环境决定常见那个bean和不创建那个bean。不过Spring并不是在构建的时候做出这样的决策,而是等到运行来再决定。这样的结果就是同一个部署单元能够使用说有的环境,没有必要进行重新构建。Spring引入了bean profile功能。可以使用@profile来指定那个bean属于profile。

技术分享图片

在Spring确定那个profile处于激活状态时,需要依赖两个独立的属性:spring.profiles.active和spring.profiles.default。如果设置了spring.profiles.active属性的话,那么他的值就会用来确定那个profile被激活;如果没有设置spring.profiles.active的话,那么spring将会查找spring.profiles.default值。如果这两个都没有设置的话,那么就没有profile被激活。可以在web.xml中设置默认的profile。

技术分享图片




  • 限定自动装配的bean:@qualifier注解是使用限定符主要方式之一。技术分享图片


  • bean的作用域?

答:在默认情况下bean是以单例的形式创建的。也就是说,不管一个bean被注入到其他bean中多少次,每次所注入的都是一个实例。Spring定义了多种作用域,可以基于这些作用域来创建bean,包括:单例(Singleton):在整个应用中,只创建一个bean的实例;原型(Prototype):每次注入或者通过应用上下文获取的时候,都会创建一个新的bean实例;会话(session):在web应用中,为每个会话创建一个bean实例;请求(Request):在web应用中,为每个请求创建一个bean实例。技术分享图片




  • 运行时值注入?

答:Spring提供了两种在运行时求值的方式:(1)属性占位符(Property placeholder);(2)Spring表达语言(SpEL)。技术分享图片技术分享图片

在XML中进行配置:

技术分享图片

使用SpEL表达语言:

技术分享图片


推荐阅读
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 我有一个SpringRestController,它处理API调用的版本1。继承在SpringRestControllerpackagerest.v1;RestCon ... [详细]
  • Struts与Spring框架的集成指南
    本文详细介绍了如何将Struts和Spring两个流行的Java Web开发框架进行整合,涵盖从环境配置到代码实现的具体步骤。 ... [详细]
  • 深入解析Spring启动过程
    本文详细介绍了Spring框架的启动流程,帮助开发者理解其内部机制。通过具体示例和代码片段,解释了Bean定义、工厂类、读取器以及条件评估等关键概念,使读者能够更全面地掌握Spring的初始化过程。 ... [详细]
  • Spring Boot 中静态资源映射详解
    本文深入探讨了 Spring Boot 如何简化 Web 应用中的静态资源管理,包括默认的静态资源映射规则、WebJars 的使用以及静态首页的处理方法。通过本文,您将了解如何高效地管理和引用静态资源。 ... [详细]
  • 本文介绍了如何利用 Spring Boot 和 Groovy 构建一个灵活且可扩展的动态计算引擎,以满足钱包应用中类似余额宝功能的推广需求。我们将探讨不同的设计方案,并最终选择最适合的技术栈来实现这一目标。 ... [详细]
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • ssm框架整合及工程分层1.先创建一个新的project1.1配置pom.xml ... [详细]
  • 本文详细介绍了Java Web应用程序中的过滤器(Filter)功能,包括其作用、实现方式及配置方法。过滤器可以在请求到达目标资源之前对其进行预处理,并在响应返回给客户端之前进行后处理。 ... [详细]
  • 本文详细解释了如何使用@IfProfileValue注解来检测Spring框架中的配置文件是否处于活动状态,并探讨其与@Profile和@activeProfiles的区别。 ... [详细]
  • 本文将深入探讨如何在不依赖第三方库的情况下,使用 React 处理表单输入和验证。我们将介绍一种高效且灵活的方法,涵盖表单提交、输入验证及错误处理等关键功能。 ... [详细]
  • 本文介绍了Android开发中Intent的基本概念及其在不同Activity之间的数据传递方式,详细展示了如何通过Intent实现Activity间的跳转和数据传输。 ... [详细]
  • 本文介绍了ArcXML配置文件的分类及其在不同服务中的应用,详细解释了地图配置文件的结构和功能,包括其在Image Service、Feature Service以及ArcMap Server中的使用方法。 ... [详细]
  • 本文详细探讨了HTML表单中GET和POST请求的区别,包括它们的工作原理、数据传输方式、安全性及适用场景。同时,通过实例展示了如何在Servlet中处理这两种请求。 ... [详细]
  • 本文介绍如何使用 Android 的 Canvas 和 View 组件创建一个简单的绘图板应用程序,支持触摸绘画和保存图片功能。 ... [详细]
author-avatar
_妃妃教主
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有