热门标签 | 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表达语言:

技术分享图片


推荐阅读
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文讨论了在Spring 3.1中,数据源未能自动连接到@Configuration类的错误原因,并提供了解决方法。作者发现了错误的原因,并在代码中手动定义了PersistenceAnnotationBeanPostProcessor。作者删除了该定义后,问题得到解决。此外,作者还指出了默认的PersistenceAnnotationBeanPostProcessor的注册方式,并提供了自定义该bean定义的方法。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • 在springmvc框架中,前台ajax调用方法,对图片批量下载,如何弹出提示保存位置选框?Controller方法 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • 微信官方授权及获取OpenId的方法,服务器通过SpringBoot实现
    主要步骤:前端获取到code(wx.login),传入服务器服务器通过参数AppID和AppSecret访问官方接口,获取到OpenId ... [详细]
  • JSP内置对象之application的作用范围和获取方式
    本文介绍了JSP内置对象之application的作用时间范围、可以在不同浏览器获取的特点,以及获取application对象的方法。通过示例代码展示了在JSP中设置和在servlet中获取application对象的步骤。对于学习JSP内置对象的读者来说,本文具有一定的参考价值。摘要长度为163字。 ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
  • EPPlus绘制刻度线的方法及示例代码
    本文介绍了使用EPPlus绘制刻度线的方法,并提供了示例代码。通过ExcelPackage类和List对象,可以实现在Excel中绘制刻度线的功能。具体的方法和示例代码在文章中进行了详细的介绍和演示。 ... [详细]
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社区 版权所有