![](https://img-blog.csdnimg.cn/58a96d6c22fe40f09e62b7cbb657f53b.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
spring零基础到精通#spring
文章平均质量分 86
spring零基础到精通,讲解小白入门到精通
洛卡JAVA架构师
这个作者很懒,什么都没留下…
展开
-
第一个Spring程序
本节介绍如何使用 Eclipse IDE 创建一个简单的 Spring 程序。在编写之前,我们必须确保已经正确搭建了 Spring 开发环境,不了解的读者请转到:Spring开发环境搭建1. 创建 Java 项目在 Eclipse 中创建一个简单的 Java 项目,依次单击 File -> New -> Java Project,这里将项目名称设置为 HelloSpring。图1:创建 Java 项目2. 添加 jar 包这里我们需要在项目中添加 Spring 和 logg原创 2022-05-16 18:20:27 · 145 阅读 · 0 评论 -
【spring入门到精通】Spring是什么
Spring 是 Java EE 编程领域的一款轻量级的开源框架,由被称为“Spring 之父”的 Rod Johnson 于 2002 年提出并创立,它的目标就是要简化 Java 企业级应用程序的开发难度和周期。Spring 自诞生以来备受青睐,一直被广大开发人员作为 Java 企业级应用程序开发的首选。时至今日,Spring 俨然成为了 Java EE 代名词,成为了构建 Java EE 应用的事实标准。Spring 的诞生与发展早期的 J2EE(Java EE 平台)推崇以 EJB 为核心的开发原创 2022-05-16 18:17:08 · 455 阅读 · 0 评论 -
Spring Bean定义
由 Spring IoC 容器管理的对象称为 Bean,Bean 根据 Spring 配置文件中的信息创建。我们可以把 Spring IoC 容器看作是一个大工厂,Bean 相当于工厂的产品。如果希望这个大工厂生产和管理 Bean,就需要告诉容器需要哪些 Bean,以哪种方式装配。Spring 配置文件支持两种格式,即 XML 文件格式和 Properties 文件格式。Properties 配置文件主要以 key-value 键值对的形式存在,只能赋值,不能进行其他操作,适用于简单的属性配置。X原创 2022-05-16 18:23:02 · 77 阅读 · 0 评论 -
Java工程师,入行或转行都是好选择~
Java是市场上占有率排名前三的编程语言,Java作为企业级应用开发的首选,不仅在很多企业得到应用,也深受互联网大厂的青睐。学习Java,就是为了更好地开发应用,不论是开发Web应用,还是开发中间件,亦或是微服务,都是Java语言所擅长的,加上Java生态的丰富多彩,对于企业级应用的全方位支持,使用Java的开发大型应用的成本相对还是比较低的。不难发现,在互联网+的影响下,这几年,中国的互联网行业进入了高速发展的阶段,同时IT行业,也成为了热门,备受追捧和关注的行业。在全球云计算和移动互联网的...原创 2022-05-15 15:16:00 · 159 阅读 · 0 评论 -
【spring入门到精通】Spring体系结构
Spring 框架基本涵盖了企业级应用开发的各个方面,它包含了 20 多个不同的模块。spring-aop spring-context-indexer spring-instrument spring-orm spring-webspring-aspects spring-context-support spring-jcl spring-oxm spring-webfluxspring-beans spring-core原创 2022-05-16 18:18:09 · 63 阅读 · 0 评论 -
Spring IoC(控制反转)
IoC 是 Inversion of Control 的简写,译为“控制反转”,它不是一门技术,而是一种设计思想,是一个重要的面向对象编程法则,能够指导我们如何设计出松耦合、更优良的程序。Spring 通过 IoC 容器来管理所有 Java 对象的实例化和初始化,控制对象与对象之间的依赖关系。我们将由 IoC 容器管理的 Java 对象称为 Spring Bean,它与使用关键字 new 创建的 Java 对象没有任何区别。IoC 容器是 Spring 框架中最重要的核心组件之一,它贯穿了 Spring原创 2022-05-16 18:21:37 · 109 阅读 · 0 评论 -
Spring事务(Transaction)
事务(Transaction)是基于关系型数据库(RDBMS)的企业应用的重要组成部分。在软件开发领域,事务扮演者十分重要的角色,用来确保应用程序数据的完整性和一致性。事务具有 4 个特性:原子性、一致性、隔离性和持久性,简称为 ACID 特性。原子性(Atomicity):一个事务是一个不可分割的工作单位,事务中包括的动作要么都做要么都不做。一致性(Consistency):事务必须保证数据库从一个一致性状态变到另一个一致性状态,一致性和原子性是密切相关的。隔离性(Isolation):一个事务的原创 2022-05-19 11:22:25 · 12610 阅读 · 0 评论 -
Spring注入内部Bean
我们将定义在 元素的 或 元素内部的 Bean,称为“内部 Bean”。setter 方式注入内部 Bean我们可以通过 setter 方式注入内部 Bean。此时,我们只需要在 标签下的 元素中,再次使用 元素对内部 Bean 进行定义,格式如下。1. <?xml version="1.0" encoding="UTF-8"?>2. 注意:内部 Bean 都是匿名的,不需要指定 id 和 name 的。即使制定了,IoC 容器也不会将它作为区分 Bean 的标识符,原创 2022-05-16 18:25:57 · 242 阅读 · 0 评论 -
Spring自动装配(基于注解)
从 Java 5 开始,Java 增加了对注解(Annotation)的支持,它是代码中的一种特殊标记,可以在编译、类加载和运行时被读取,执行相应的处理。开发人员可以通过注解在不改变原有代码和逻辑的情况下,在源代码中嵌入补充信息。Spring 从 2.5 版本开始提供了对注解技术的全面支持,我们可以使用注解来实现自动装配,简化 Spring 的 XML 配置。Spring 通过注解实现自动装配的步骤如下:引入依赖开启组件扫描使用注解定义 Bean依赖注入引入依赖使用注解的第一步,就是要在原创 2022-05-18 19:25:33 · 1489 阅读 · 0 评论 -
Spring SpEL表达式语言
Spring Expression Language(简称 SpEL)是一种功能强大的表达式语言,支持运行时查询和操作对象图 。表达式语言一般是用最简单的形式完成最主要的工作,以此减少工作量。Java 有许多可用的表达式语言,例如 JSP EL,OGNL,MVEL 和 JBoss EL,SpEL 语法类似于 JSP EL,功能类似于 Struts2 中的 OGNL,能在运行时构建复杂表达式、存取对象图属性、调用对象方法等,并且能与 Spring 功能完美整合,如 SpEL 可以用来配置 Bean 定义。原创 2022-05-19 11:27:25 · 255 阅读 · 0 评论 -
AOP面向切面编程
除了控制反转(IoC)和依赖注入(DI)外,Spring 框架还提供了对面向切面编程(AOP)的支持。本节,我们就对 AOP 面向切面编程进行讲解。AOP 的全称是“Aspect Oriented Programming”,译为“面向切面编程”,和 OOP(面向对象编程)类似,它也是一种编程思想。通常情况下,我们会根据业务使用 OOP(面向对象)思想,将应用划分为多个不同的业务模块,每个模块的核心功能都只为特定的业务领域提供服务,例如电商系统中的订单模块、商品模块、库存模块就分别是为维护电商系统的订单原创 2022-05-18 19:29:14 · 121 阅读 · 0 评论 -
Spring整合日志框架Log4j2
对于一款软件而言,日志记录都是十分重要的。它不仅能够监控程序的运行情况,周期性的记录到文件中,还能够跟踪程序中代码的运行轨迹,向文件或控制台打印代码的调试信息。当程序出现错误时,日志记录可以帮助开发人员及时定位问题,因此对开发人员来说,日志记录更是尤为重要。Spring 5 框架自带了通用的日志封装,但是我们依然可以整合其他的日志框架对日志进行记录,其中最广为人知的就是大名鼎鼎的 Log4j。Log4j 是 Apache 提供的一款开源的强有力的 Java 日志记录工具。它可以通过配置文件灵活、细致地控原创 2022-05-19 11:26:37 · 1376 阅读 · 0 评论 -
Spring注入集合
我们还可以在 Bean 标签下的 元素中,使用以下元素配置 Java 集合类型的属性和参数,例如 List、Set、Map 以及 Properties 等。示例 1:在集合中设置普通类型的值下面我们通过一个实例,演示下如何注入集合类型的属性和参数。1. 参考《[第一个 Spring 程序]》,新建一个名为 my-spring-demo4 的 Java 项目。2. 在 net.biancheng.c 包下,创建一个名为 JavaCollection 的类,代码如下。1. package ne原创 2022-05-16 18:27:14 · 203 阅读 · 0 评论 -
Spring使用AspectJ进行AOP开发(基于注解)
在 Spring 中,虽然我们可以使用 XML 配置文件可以实现 AOP 开发,但如果所有的配置都集中在 XML 配置文件中,就势必会造成 XML 配置文件过于臃肿,从而给维护和升级带来一定困难。为此,AspectJ 框架为 AOP 开发提供了一套 @AspectJ 注解。它允许我们直接在 Java 类中通过注解的方式对切面(Aspect)、切入点(Pointcut)和增强(Advice)进行定义,Spring 框架可以根据这些注解生成 AOP 代理。关于注解的介绍如表 1 所示。启用 @Aspec原创 2022-05-18 19:35:47 · 630 阅读 · 0 评论 -
Spring基于注解实现事务管理
在《Spring基于XML实现事务管理》一节中,我们通过 tx:advice 元素极大的简化了 Spring 声明式事务所需的 XML 配置。但其实我们还可以通过另一种方式进行进一步的简化,那就是“使用注解实现事务管理”。在 Spring 中,声明式事务除了可以使用 XML 实现外,还可以使用注解实现,以进一步降低代码之间的耦合度。下面我们就来介绍下,通过注解是如何实现声明式事务管理。开启注解事务tx 命名空间提供了一个 tx:annotation-driven 元素,用来开启注解事务,简化 Spr原创 2022-05-19 11:25:05 · 1433 阅读 · 0 评论 -
Spring自动装配
我们把 Spring 在 Bean 与 Bean 之间建立依赖关系的行为称为“装配”。Spring 的 IOC 容器虽然功能强大,但它本身不过只是一个空壳而已,它自己并不能独自完成装配工作。需要我们主动将 Bean 放进去,并告诉它 Bean 和 Bean 之间的依赖关系,它才能按照我们的要求完成装配工作。在前面的学习中,我们都是在 XML 配置中通过 和 中的 ref 属性,手动维护 Bean 与 Bean 之间的依赖关系的。例如,一个部门(Dept)可以有多个员工(Employee),而一个员工原创 2022-05-18 19:23:41 · 310 阅读 · 0 评论 -
Spring集成AspectJ
我们知道,Spring AOP 是一个简化版的 AOP 实现,并没有提供完整版的 AOP 功能。通常情况下,Spring AOP 是能够满足我们日常开发过程中的大多数场景的,但在某些情况下,我们可能需要使用 Spring AOP 范围外的某些 AOP 功能。例如 Spring AOP 仅支持执行公共(public)非静态方法的调用作为连接点,如果我们需要向受保护的(protected)或私有的(private)的方法进行增强,此时就需要使用功能更加全面的 AOP 框架来实现,其中使用最多的就是 Aspec原创 2022-05-18 19:32:58 · 386 阅读 · 0 评论 -
Spring使用AspectJ进行AOP开发(基于XML)
我们可以在 Spring 项目中通过 XML 配置,对切面(Aspect 或 Advisor)、切点(PointCut)以及通知(Advice)进行定义和管理,以实现基于 AspectJ 的 AOP 开发。Spring 提供了基于 XML 的 AOP 支持,并提供了一个名为“aop”的命名空间,该命名空间提供了一个 aop:config 元素。在 Spring 配置中,所有的切面信息(切面、切点、通知)都必须定义在 aop:config 元素中;在 Spring 配置中,可以使用多个 aop:conf原创 2022-05-18 19:33:51 · 423 阅读 · 0 评论 -
Spring JdbcTemplate(使用详解)
我们知道,JDBC 是 Java 提供的一种用于执行 SQL 语句的 API,可以对多种关系型数据库(例如 MySQL、Oracle 等)进行访问。但在实际的企业级应用开发中,却很少有人直接使用原生的 JDBC API 进行开发,这是因为使用 JDBC API 对数据库进行操作十分繁琐,需要我们对每一步都做到“步步把控,处处关心”,例如我们需要手动控制数据库连接的开启,异常处理、事务处理、最后还要手动关闭连接释放资源等等。Spring 提供了一个 Spring JDBC 模块,它对 JDBC API 进原创 2022-05-19 11:19:16 · 5395 阅读 · 0 评论 -
Spring Bean属性注入
所谓 Bean 属性注入,简单点说就是将属性注入到 Bean 中的过程,而这属性既可以普通属性,也可以是一个对象(Bean)。Spring 主要通过以下 2 种方式实现属性注入:构造函数注入setter 注入(又称设值注入)构造函数注入我们可以通过 Bean 的带参构造函数,以实现 Bean 的属性注入。使用构造函数实现属性注入大致步骤如下:在 Bean 中添加一个有参构造函数,构造函数内的每一个参数代表一个需要注入的属性;在 Spring 的 XML 配置文件中,通过 及原创 2022-05-16 18:24:41 · 711 阅读 · 0 评论 -
Spring Bean作用域
默认情况下,所有的 Spring Bean 都是单例的,也就是说在整个 Spring 应用中, Bean 的实例只有一个。我们可以在 元素中添加 scope 属性来配置 Spring Bean 的作用范围。例如,如果每次获取 Bean 时,都需要一个新的 Bean 实例,那么应该将 Bean 的 scope 属性定义为 prototype,如果 Spring 需要每次都返回一个相同的 Bean 实例,则应将 Bean 的 scope 属性定义为 singleton。Spring 5 共提供了 6 种原创 2022-05-16 18:29:34 · 123 阅读 · 0 评论 -
Spring Bean继承
在 Spring 中,Bean 和 Bean 之间也存在继承关系。我们将被继承的 Bean 称为父 Bean,将继承父 Bean 配置信息的 Bean 称为子 Bean。Spring Bean 的定义中可以包含很多配置信息,例如构造方法参数、属性值。子 Bean 既可以继承父 Bean 的配置数据,也可以根据需要重写或添加属于自己的配置信息。在 Spring XML 配置中,我们通过子 Bean 的 parent 属性来指定需要继承的父 Bean,配置格式如下。1. 2. 3. 4.原创 2022-05-18 19:22:02 · 764 阅读 · 0 评论 -
Spring基于XML实现事务管理
Spring 声明式事务管理是通过 AOP 实现的,其本质是对方法前后进行拦截,然后在目标方法开始之前创建(或加入)一个事务,在执行完目标方法后,根据执行情况提交或者回滚事务。声明式事务最大的优点就是对业务代码的侵入性低,可以将业务代码和事务管理代码很好地进行解耦。Spring 实现声明式事务管理主要有 2 种方式:基于 XML 方式的声明式事务管理。通过 Annotation 注解方式的事务管理。下面介绍如何通过 XML 的方式实现声明式事务管理,步骤如下。引入 tx 命名空间Spring原创 2022-05-19 11:23:54 · 679 阅读 · 0 评论 -
Spring注入其他类型的属性
除了普通属性、对象属性(Bean)、集合等属性外,Spring 也能够将其他类型的属性注入到 Bean 中,例如 Null 值、字面量、复合物属性等。注入 Null 值我们可以在 XML 配置文件中,通过 元素将 Null 值注入到 Bean 中。下面,我们通过一个简单的实例,来演示下如何将 Null 值注入到 Bean 中。1. 参考《第一个 Spring 程序》,新建一个名为 my-spring-demo5 的 Java 项目。2. 在 net.biancheng.c 包中,创建一个名为 E原创 2022-05-16 18:28:22 · 255 阅读 · 0 评论 -
Spring AOP编程(十分详细)
Spring AOP 是 Spring 框架的核心模块之一,它使用纯 Java 实现,因此不需要专门的编译过程和类加载器,可以在程序运行期通过代理方式向目标类织入增强代码。Spring AOP 的代理机制Spring 在运行期会为目标对象生成一个动态代理对象,并在代理对象中实现对目标对象的增强。Spring AOP 的底层是通过以下 2 种动态代理机制,为目标对象(Target Bean)执行横向织入的。注意:由于被标记为 final 的方法是无法进行覆盖的,因此这类方法不管是通过 JDK 动态代原创 2022-05-18 19:31:12 · 388 阅读 · 0 评论 -
Spring后置处理器(BeanPostProcessor)
本节主要介绍在《[Spring Bean生命周期]》一节提到的 BeanPostProcessor 接口。BeanPostProcessor 接口也被称为后置处理器,通过该接口可以自定义调用初始化前后执行的操作方法。BeanPostProcessor 接口源码如下:1. public interface BeanPostProcessor {2. Object postProcessBeforeInitialization(Object bean, String beanNam原创 2022-05-18 19:21:19 · 715 阅读 · 0 评论