![](https://img-blog.csdnimg.cn/20191101140815179.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Spring
Spring相关基础知识
longhuihu
毕业于北邮计算机系,先后供职诺基亚、网易、北京域起,从事过嵌入式,移动APP开发,2015年开始从事游戏前后端的研发及技术管理,目前专注于Netty,JVM,Redis,DDD等游戏服务端关键技术领域。
展开
-
SpringMVC之三:HandlerMapping
我们知道Spring通常以bean的形式来组织功能模块,Spring MVC也不列外。Spring MVC以一系列特定类型的bean来构建整个框架。相关Bean类型Bean类型说明HandlerMapping实现了url到处理器的映射关系,包括与之关联的拦截器(interceptors);有两个主要实现类,RequestMappingHandlerMapping支持@Re...原创 2020-01-14 16:14:26 · 316 阅读 · 0 评论 -
详解Spring MVC之二:M-V-C在哪
Spring MVC实现了一个完整的基于MVC设计模式的web服务框架。这个框架包含的知识特别多,而且这些知识点之间存在密切的联系。因此我们有必要先从整体上介绍了一下这个框架,建立一个完整的印象,为后续的学习做一个铺垫。我们先看一个示例代码:@Controllerpublic class MyController {@AutoWiredprivate PetRepository rep...原创 2019-12-13 17:57:36 · 766 阅读 · 0 评论 -
详解Spring MVC之一:DispatcherServlet
前言让我们开启Spring知识一个新的系列文章,详解Spring Web MVC。同样,这个系列的文章是对Spring官方文档的一个翻译、整理、重组,以及小幅度的补充。原文档的地址在这里。Spring MVC是符合servlet规范的一个web框架,它通过一个叫做DispatcherServlet的Servlet,来接受所有的http请求,再转发给Spring容器内的MVC组件来处理这些请求。...原创 2019-12-13 17:09:54 · 302 阅读 · 0 评论 -
Spring AOP:底层API
上一章介绍了Spring AOP的概念和基本用法,本章探寻SpringAOP更底层API,一窥Spring AOP的实现原理。在使用层面,上一章介绍的知识完全足够了,并不推荐在实际项目中使用本章介绍的API。本章对应的官方原文档的地址。PointCut API通过上一章我们知道,@PoinCut注解可以定义的切点,可在多个通知之间复用。因此在实现层面,切点和通知也是完全解耦的。切点通过接口o...原创 2019-12-11 17:29:03 · 726 阅读 · 0 评论 -
Spring AOP:概念和用法
在一个应用系统中,我们会有一些核心业务逻辑之外的关注点,比如安全、日志、事务,这些关注点横跨整个业务系统,与具体业务功能交织在一起。对于此类关注点,面向对象编程束手无策。AOP(面向切面编程)是解决该问题的技术概念模型,一个切面是对某个横切关注点的模块化,织入将这个切面插入目标模块而不需要目标模块修改代码。有很多的AOP实现方案,比如强大的AspectJ;Spring AOP借鉴了AspectJ...原创 2019-12-11 17:17:42 · 249 阅读 · 0 评论 -
Spring基础十三(终):BeanFactory
这是Spring基础知识系列的最后一个章节,让我们回顾一下Spring核心功能:Ioc容器。我们初始化一个Spring容器时,是创建一个ApplicationContext的实现类,需要直接访问容器功能时,大多也是调用ApplicationContext方法;仿佛容器这个抽象概念的具体形式就是ApplicationContext。这样的理解本身也没有大问题,不过ApplicationContex...原创 2019-11-28 16:19:21 · 109 阅读 · 0 评论 -
Spring基础十二:Resource
JDK自带的java.nt.URL类可以通过路径来访问各类资源,不同的url前缀指向不同类型的资源,比如文件系统或web资源。不过这个类的功能有所不足,缺少访问classPath或ServletContext下资源的能力,并且缺少一些常用的方法。因此,Spring定义了一套加载底层资源的机制,用来取代java.net.URL,该机制的核心是两个接口:ResourceLoader和Resource...原创 2019-11-28 16:09:01 · 217 阅读 · 0 评论 -
Spring基础十一:ApplicationContext的附加功能
ApplicationContext除了作为容器,负责bean的初始化和管理,还将一些有用功能模块集成到framework里:1、i18n风格的文本的国际化,通过MessageSource接口;2、容器内的事件发布(ApplicationEventPublisher)订阅(ApplicationListener);3、访问url和文件资源,通过ResourceLoader接口;4、多个co...原创 2019-11-28 16:03:15 · 282 阅读 · 0 评论 -
Spring基础十:@Value属性值注入
@Autowire可以用来注入bean依赖,@Value则用于注入属性值。本章介绍@Value的使用方法,属性值来源以及属性值类型转换的原理。回顾PropertySourcesPlaceholderConfigurer在介绍BeanFactoryPostProcessor的时候,我们讲过,可以通过向容器注册一个PropertySourcesPlaceholderConfigurer来替换属性值...原创 2019-11-22 16:02:57 · 1758 阅读 · 0 评论 -
Spring基础九:环境Environment
在继续讲解基于注解(@Value)的属性配置之前,我们先介绍Spring的Environment,否则@Value的属性来源会讲不清楚。这与官方文档的顺序有所不同。本章内容对应官方文档地址。Environment是对Spring运行的外部环境抽象,Environment主要管理两个概念:profiles和properties。Profile要准确给Pofile下一个定义还挺难的,官方文档认为...原创 2019-11-22 15:38:41 · 664 阅读 · 0 评论 -
Spring基础八:基于java代码配置
前两章介绍了,利用java注解,我们可以大大减少xml配置的篇幅,只需在xml里开启对相关注解的支持即可。这一节介绍基于java代码的容器配置,让我们完全摆脱对xml的依赖。java代码配置实际上是结合注解和java代码,其中的关键在@Configuration和@Bean这两个注解。@Configuration标注java类,指明这是一个Spring的配置类,我们可以看做xml配置文件的替代物...原创 2019-11-22 15:04:58 · 140 阅读 · 0 评论 -
Spring基础七:基于注解配置—依赖注入
Bean的依赖注入可以全部通过注解来完成。Spring定义了很多注解,同时也不断添加对JSR注解的支持,比如@PostConstrut和@PreDestroy是JSR-330定义的注解。Spring的理念是强调框架的非侵入性,即期望业务代码不要过多和Spring框架紧耦合,如果对某个功能,JSR有合适语义的注解定义,Spring一般也会支持。开启相关注解java的注解本质上是附加在代码上的标签...原创 2019-11-07 12:08:01 · 259 阅读 · 0 评论 -
Spring基础六:基于注解配置—bean声明
从这一章开始,我们逐步抛弃xml格式的配置,讲述如何使用java注解和java代码来配置bean,这一部分分成了三个章节。这一章,讲述如何使用注解在java类上定义bean;下一章,讲述如何通过注解配置bean之间的依赖,第三章讲述如何使用java代码来定义bean。定义bean的注解目前Spring提供了@Component, @Service, @Controller,@Repositor...原创 2019-11-07 11:40:21 · 151 阅读 · 0 评论 -
Spring基础五:容器功能扩展
Spring容器不仅提供了强大的配置方法,还提供了容器功能扩展点,用户可以基于这些扩展点代码可以增强容器的功能。实际上,Spring很多模块,比如AOP,对注解的支持等,都是基于该机制实现的。通过BeanPostProcessor定制BeanBeanPostProcessor定义了一个能对Bean的初始化进行定制的接口。如果我们实现一个BeanPostProcessor,并注册到容器,就能对b...原创 2019-11-07 11:02:22 · 171 阅读 · 0 评论 -
Spring基础四:Bean回调机制
容器内的bean能够设置一些回调方法,以执行bean自身初始化&销毁,或响应容器的某些事件。bean的init&destroy回调InitializingBean和DisposableBean接口InitializingBean接口就一个方法afterPropertiesSet(),如果bean实现了该接口,当容器完成对bean的创建和依赖注入之后,会调用这个方法。Bean可...原创 2019-11-01 16:13:59 · 1018 阅读 · 0 评论 -
Spring基础三:BeanScope
当我们提供一一份bean的定义时,我们实际制作了如何创建一个bean的菜谱,这意味着,基于这个定义我们可以创建任意多个bean实例。Bean作用域的概念,定义了bean实例的有效范围,Spring支持6种作用域范围,其中4种只在web应用中有效。作用域描述singleton单例作用域,spring内置,在整个容器内有效prototype原型作用域,spring内置,...原创 2019-11-01 15:27:13 · 161 阅读 · 0 评论 -
Spring基础二:依赖注入
一个应用系统必然包含大量的bean,这些bean之间存在依赖关系。 依赖注入(Dependency injection)是Spring容器的核心功能。Bean可以几种方式来声明自己的依赖: 构造方法参数、工厂方法参数、Setter属性;容器在构造、初始化bean的过程中,将适当的bean引用注入进去。本章的内容大体位于Spring官方文档的这个位置构造参数注入假设我们有一个bean类声明如下...原创 2019-11-01 15:10:25 · 209 阅读 · 0 评论 -
Spring基础一:容器和Bean
前言这个系列的文章,以Spring5.*的官方文档为蓝本,经过翻译、整理和简化而成,没有添加任何其他来源的内容。因此,内容的正确性是有保证的;不好的地方是,由于本人功力有限,翻译整理后的文字流畅性不是很好。另一方面,Spring的官方文档,本身就不具备深入浅出、实例丰富的特点,本人写作的时候也就不提更高的要求了;但对于一些有疑问的点,还是通过实例代码稍微测试了一下,这些代码放在git上,文章里面...原创 2019-11-01 14:15:15 · 753 阅读 · 0 评论