Spring教程
冰点IT
本人五年开发经验,对Java主流开发框架有较深入的研究,博客内容主要从两个层面体现:教程系列和专题系列,其中教程系列内容有连续性,便于学习和入门;而专题系列主要解决开发中遇到的技术痛点,便于技术的进阶,也希望各位学友能够给与支持和鼓励,谢谢!
展开
-
Spring教程01-简介
阅读原文1、Spring框架概述1.1、设计理念当您了解框架时,重要的是不仅要知道它的作用,还要了解它遵循的原则。以下是Spring Framework的指导原则:提供各个层面的选择。Spring允许您尽可能晚地推迟设计决策。例如,您可以通过配置切换持久性提供程序,而无需更改代码。许多其他基础架构问题以及与第三方API的集成也是如此。适应不同的观点。Spring以不同的视角支持广泛的应...原创 2019-09-25 09:58:10 · 141 阅读 · 0 评论 -
Spring教程02-日志组件
阅读原文1、Spring依赖管理如果我们使用Maven进行依赖关系管理,我们甚至不需要显式提供日志记录的依赖关系。 例如,要创建应用程序上下文并使用依赖注入来配置应用程序,我们的Maven依赖关系将如下所示:<properties> <!--spring版本设置--> <spring.version>5.1.3.RELEASE</spring.v...原创 2019-09-25 11:57:33 · 337 阅读 · 0 评论 -
Spring教程03-Bean实例化
1、Spring IoC容器和Bean简介1.1、什么是IOCIoC又叫依赖注入(DI)。它描述了对象的定义和依赖的一个过程,也就是说,依赖的对象通过构造参数、工厂方法参数或者属性注入,当被依赖的对象实例化后依赖的对象才会被创建, 正常情况下我们因该是先创建一个对象而后去使用它,现在这个过程被反向执行,因此命名为控制反转(IoC)。如下图:以上是Spring官方文档给出的关于SpringI...原创 2019-10-26 12:07:53 · 234 阅读 · 0 评论 -
Spring教程04-自动化装配Bean
阅读原文看过Spring官方文档我们就可以发现Spring大体上为我们提供了三种装配Bean的方式:在XML中进行显示配置。在Java代码中显示配置。隐式的bean发现机制和自动装配。1、自动装配Bean我们先来探讨Bean的自动装配,要想实现Bean的自动装配需要先认识Spring的两个核心组件:组件扫描(component scanning): Spring会自动的从应用上...原创 2019-10-26 13:13:22 · 174 阅读 · 0 评论 -
Spring教程05-Java代码装配Bean
接着上次自动化装配Bean,这次我们来探讨Java代码装配Bean。一般情况下Spring提供的自动装配Bean功能已经能满足绝大多数场景的需求,但是如果我们需要整合第三方框架,这个时候是无法使用@Component和@Autowired注解进行自动装配的。那么这种情况下,我们只能选择Java代码或者XML的显式配置。1、Java代码装配Bean1.1、创建一个配置类JavaConfigBea...原创 2019-11-04 19:53:34 · 199 阅读 · 0 评论 -
Spring教程06-XML装配Bean
阅读原文XML装配Bean的方式是Spring最初描述配置的主要方式,当然就现在还是有很多人以此方式来装配Bean,下面我们就来探讨以XML的形式装配Bean,来看看Spring配置文件的强大!1、XML装配Bean1.1、创建Spring配置文件规范由于我使用的是IDEA编译器,那我就简单说一下IDEA是如何创建Spring配置文件的,来看截图:Spring配置文件规范:<?...原创 2019-11-04 21:02:19 · 175 阅读 · 0 评论 -
Spring教程07-自动装配、JavaConfig、Xml配置混合使用
阅读原文前面我们已经探讨了自动装配、JavaConfig、Xml配置的单独使用,下面我们探讨他们之间的配合使用,彰显一下Spring配置的威力。1、JavaConfig配置拆分与聚合在开发中,随着业务的复杂度,我们的配置类也会随着时间的推移变得越来越臃肿,为了使我们的配置变得简洁、清爽,我们肯定会对配置类根据其业务范围、运行环境以及配置习惯等等将其拆分,而后再根据拆分之后的配置进行聚合,完成...原创 2019-11-05 21:53:11 · 282 阅读 · 0 评论 -
Spring教程08-环境配置之profile
阅读原文作为开发人员我们经常会遇到不同环境下配置的切换问题,那么对于spring的配置我们又该如何去做切换呢?这将使用到Spring的 profile功能,它可以定义某个配置类或者Bean的使用环境,我们在容器加载之前只需要配置其需要激活的profile就可以完成不同环境下配置的随意切换。1.1、使用profile定义配置类1.1.1、基于JavaConfig@Configuration...原创 2019-11-05 21:54:29 · 169 阅读 · 0 评论 -
Spring教程09-条件化的Bean装配
阅读原文什么叫条件化的Bean装配?有时候我们需要在满足特定的条件下装配一个Bean,比如spring的profile功能,它可以让Bean组件在指定的环境下创建,那么下面我们使用条件化的Bean装配来简单模拟一下profile的功能。1、条件化Bean装配要想实现条件化的Bean装配,得使用Spring的@Conditional注解,@Conditional的value值可以是任何实现了C...原创 2019-11-06 20:03:05 · 230 阅读 · 0 评论 -
Spring教程10-解决Bean在自动装配时的歧义性
阅读原文1、什么是Bean在自动装配时的歧义性Spring在自动装配的过程中,如果不仅有一个Bean满足装配条件时,这种歧义会阻碍Spring自动装配属性,构造器参数或者方法参数。例如,我们定义一个接口为Music,再定义该接口的三个实现类分别为:FashionMusic、ClassicalMusic、RapMusic代码如下:public interface Music { publ...原创 2019-11-08 20:13:47 · 655 阅读 · 0 评论 -
Spring教程11-Bean的作用域
阅读原文1、什么是Bean的作用域Bean的作用域也就是Bean的作用范围,Spring默认Bean的作用域单例(Singletion),也就是说Bean在容器加载时被实例化一次之后,之后无论被注入多少次,都使用的是同一个实例。那么Spring还未我们提供了那些作用域呢?单例(Singleton):在整个应用中,只创建一个Bean的实例。原型(Prototype):每次注入或者通过Spri...原创 2019-11-10 20:05:04 · 144 阅读 · 0 评论 -
Spring教程12-强大飘逸的表达式语言
一、探讨Environment的使用1、Spring属性解析器标准接口介绍public interface PropertyResolver { //检查是否包含该属性,包含返回true,否则返回false boolean containsProperty(String key); //根据属性标识获取该属性对应的值,非必须定义,没有指定返回类型 @Nullable String g...原创 2019-11-11 21:35:55 · 236 阅读 · 0 评论 -
Spring教程13-面向切面编程(AOP)介绍
阅读原文一、什么是面向切面编程Aspect Oriented Programming(AOP),面向切面编程主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。这是百科给出的解释,简而言之,面向切面编程其实就是让我们的核心业务流程不受到其他辅助组件流程的侵入,达到核心业务与辅助业务的解耦效果,如下图所示:图...原创 2019-11-13 20:04:02 · 255 阅读 · 0 评论 -
Spring教程14-AOP动态代理
阅读原文一、什么是代理设计模式代理设计模式:为其他对象提供一种代理来控制这个对象的访问,比如:公司现在要去谈一个业务,这个业务的核心功能都是由A员工负责的,但是A不想去接触一些与核心功能无关的事情,所以就将一些辅助工作交由B员工来做,当具体到核心业务时,由B向A转达完成核心功能,那么B就是A的代理。代理又分为静态代理和动态代理,静态代理和动态代理最大的区别是静态代理的代理对象在做事前是已知的,...原创 2019-11-14 21:43:42 · 211 阅读 · 1 评论 -
Spring教程15-使用AspectJ定义切点
阅读原文在讨论AspectJ创建切点之前,先理解一下SpringAOP的实现原理,上篇文章我之所以讲代理设计模式,就是因为SpringAOP的实现原理就是基于动态代理的,那到底是怎样来代理的呢?请看下图:由于我在上图已经阐述了SpringAOP的工作原理,这里就不废话了,下面我们正式进入切面编程之旅。一、Spring支持的AspectJ切点指示器所谓切点指示器就是描述切点位置的一种方式,...原创 2019-11-18 22:54:04 · 657 阅读 · 0 评论 -
Spring教程16-使用注解创建切面
阅读原文一、创建切面所需知识点1、pom文件配置,引入两个包:<dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>5.1.3</version...原创 2019-11-19 20:51:29 · 203 阅读 · 0 评论 -
Spring教程17-AOP接受参数与功能引入
阅读原文上篇我们讨论了Spring如何创建切面,相信大家对切面的创建已经非常熟悉了,同时也应该发现了,我们创建的切面通知没有接收任何目标方法的参数,但是在实际的开发中接收目标方法携带的参数应该是非常合理的需求,那么如何接收目标方法的参数以及如何增强目标的对象功能,将是我们这篇讨论的主要话题。一、接收目标方法参数1、创建UserService接口public interface UserSe...原创 2019-11-20 22:14:57 · 446 阅读 · 0 评论 -
Spring教程18-使用XML配置切面
阅读原文之前关于切面的创建我们都是基于Java配置讲解的,这篇我们将以XML配置的方式来对之前的讲解做一次回顾,以下的代码我就不做讲解了,只是换了一种配置方式,实现原理之前都讨论过了,我们直接看代码。一、创建一个简单的切面1、创建UserService接口以及实现类public interface UserService { public boolean saveUser(Long...原创 2019-11-21 21:07:51 · 371 阅读 · 0 评论