![](https://img-blog.csdnimg.cn/20210907164550329.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Spring
文章平均质量分 87
Spring can be used to refer to the Spring Framework project itself, which is where it all started.
Spring:万物开始的地方
swadian2008
不积跬步,无以至千里;不积小流,无以成江海
展开
-
Spring 中的事件监听机制
ApplicationContext 中的事件处理是通过ApplicationEvent 类和ApplicationListener 接口实现的。如果一个 Bean(监听器实例)实现了ApplicationListener 接口,并被部署到 Spring 容器中,那么每次在容器中发布一个ApplicationEvent 事件,该 Bean (监听器实例)都会被通知到。本质上,这种机制就是一个观察者的设计模式。原创 2022-11-28 14:04:46 · 4548 阅读 · 4 评论 -
Spring 中的环境抽象(Environment Abstraction)
和。// profiles 环境配置文件,properties 属性配置文件一个 profiles 文件是一组被命名的、具有 beans 定义的逻辑组,当指定的 profiles 文件被激活时,该文件中内容会被 Spring 容器进行加载(注册)。Beans 可以被分配到一个基于 XML 格式或基于注解格式的 profiles 文件中。原创 2022-11-22 11:36:41 · 526 阅读 · 0 评论 -
Spring 基于 Java 的容器配置方式详解
任何使用 @Bean 注释定义的类都支持常规生命周期回调,并且可以使用 JSR-250 中的 @PostConstruct 和 @PreDestroy 注释。// 常规的生命周期方法可以在注解中指定常规的 Spring 生命周期回调也得到了充分的支持。如果 bean 实现了 InitializingBean、DisposableBean 或 Lifecycle,容器将调用它们各自的方法。原创 2022-11-16 09:46:08 · 830 阅读 · 0 评论 -
Spring 中的类路径扫描和组件托管机制详解
默认情况下,@Component, @Repository, @Service, @Controller,@Configuration 等注解只能检测候选组件,不过,你可以通过自定过滤器来改变这些默认行为。在 @ComponentScan 注解中通过配置 includeFilters 和 excludeFilters 属性来实现自定义。每个过滤的元素都需要包含过滤类型 type 和过滤表达式 expression 两个属性,更详细的介绍,请点击这里。// 自定义扫描的文件// ...}原创 2022-11-02 20:13:08 · 691 阅读 · 0 评论 -
Spring 基于注解的容器配置有哪些?
开发人员不使用XML描述bean连接,而是通过在相关的类、方法或字段声明上使用注释,将配置移动到组件类本身。正如在示例:AutowiredAnnotationBeanPostProcessor中提到的,将BeanPostProcessor与注释结合使用是扩展Spring IoC容器的常见方法。原创 2022-11-01 15:54:14 · 283 阅读 · 0 评论 -
Spring 容器有哪些拓展点?
实现 BeanPostProcessor 接口,自定义回调方法,可以实现(或覆盖容器的默认)实例化逻辑、依赖关系解析逻辑等等的自定义。如果你想在 Spring 容器完成 bean 的实例化、配置和初始化之后实现一些自定义逻辑,那么你可以通过实现 BeanPostProcessor 接口,插入一个或多个自定义的 BeanPostProcessor 实现。// 后置处理器,是在 Bean 被实例化、属性赋值后,实现一些自定义逻辑。Bean 的生命周期。原创 2022-10-26 13:51:56 · 395 阅读 · 0 评论 -
Spring 中的ApplicationContextAware 和 BeanNameAware 抽象
同时,使用基于注解的方式,如果在 ApplicationContext 类型相关的字段、构造器或者方法上带有 @Autowired 注解,那么 ApplicationContext 容器会自动进行装配。通过持有 ApplicationContext 引用或者把引用转化为 ApplicationContext 的子类(比如,ConfigurableApplicationContext,它具备额外的功能),beans 可以使用编程方式来操作 ApplicationContext 容器。原创 2022-10-26 11:44:21 · 440 阅读 · 0 评论 -
定义 Bean 的性质:Spring 的生命周期回调
Spring 框架提供了许多接口,你可以使用这些接口自定义bean的性质。你可以通过实现 InitializingBean 和 DisposableBean 接口与管理 bean 生命周期的容器进行交互。容器可以在 bean 初始化之前调用 afterPropertiesSet() 方法,在 bean 销毁之后调用 destroy() 方法,来执行一些操作。// 第一种方式使用 Java JSR-250 规范中的 @PostConstruct 和 @PreDestroy 注解。原创 2022-10-25 09:54:42 · 622 阅读 · 0 评论 -
Spring 自动装配和 Method Injection(方法注入)
在顶层 标签中,default-autowire-candidates 属性可以接受多种模式,例如,限制名称以 Repository 结尾 bean 才能进行自动装配,可以配置这个属性的值为:*Repository,如果需要提供更多模式,可以用逗号分隔符在列表中定义他们。当一个单例 bean 需要与另一个单例 bean 的协作,或者一个非单例 bean 需要与另一个非单例 bean 的协作时,通常通过将一个 bean 定义为另一个 bean 的属性来处理依赖关系。原创 2019-10-16 14:41:47 · 411 阅读 · 0 评论 -
Spring 依赖注入详解
/ 依赖关系,指的就是对象之间的相互协作关系依赖注入(DI)是一个过程,在这个过程中,对象仅通过构造函数参数、工厂方法的参数或在对象被实例化后通过属性设置来定义它们的依赖项(即与该对象一起工作的其他对象)。然后,容器在创建 bean 时注入这些依赖项。这个过程基本上是与对象直接通过构造类或等机制来控制其依赖项的实例化或位置是相反的,因此得名控制反转。// 对象不直接创建自己,而是通过 Spring 容器创建,那么 Spring 容器是如何创建对象的?原创 2022-10-25 09:48:18 · 4716 阅读 · 0 评论 -
Spring Beans 详解
在 bean 定义中,通过 id 属性和任何数量的 name 属性组合可以为 bean 提供多个名称。这些名称可以作为同一个 bean 的别名,它们在某些情况下很有用。例如,不同的应用程序可以使用不同的别名去引用同一个公共的 bean。当定义 bean 时,并不一定能一次性指定所有别名,有时候,在其他地方也需要定义 bean 的别名。大型系统中,在不同文件中定义别名是常见的情况,其中配置会被划分到每个子系统中,而每个子系统都有自己的 bean definitions 配置。原创 2022-10-19 16:01:10 · 1464 阅读 · 0 评论 -
Spring IoC 依赖注入的三种方式
Spring IoC(Inversion of Control,控制反转)是一种设计原则,也是一种编程思想。IoC 的核心思想是将对象的创建和对象之间的依赖关系的管理交由容器来负责,而不是由程序员手动管理。Spring IoC 才接触会比较难懂,但实际上很简单,总结起来就一句话:让别人为你服务!下边一张图展示了 IoC 容器在对象与依赖对象之间扮演的角色:那么问题来了,如何让IoC容器为你服务呢?IoC容器又是如何把你所需要的对象提供给你的呢?原创 2022-10-19 09:07:26 · 1194 阅读 · 0 评论 -
Spring IoC 容器和 Spring Beans 概念
ApplicationContext 是 BeanFactory 的一个完整的超集(BeanFactory 的拓展),Spring 的 IoC 容器使用 ApplicationContext 进行描述。// ApplicationContext(抽象类)是 Spring 中具体使用的容器,它是 BeanFactory(接口)的具体实现和扩充。来定义它们的依赖项(依赖项指该对象使用的其他对象)的过程,然后,容器在创建这些对象时注入对象的依赖项(属性或者对象)。// 使用参数或对象属性来定义对象的过程。原创 2022-10-18 16:12:31 · 478 阅读 · 0 评论 -
Spring AOP 接口动态引入的实现
AOP引入:可以将其他接口或实现动态的引入到目标类中(1)首先需要定义被增强的类,接口:Calculate.java,实现类:SimpleCalculate.Java// 目标接口public interface Calculate { // 加法 int add(int numA, int numB);}// 目标接口实现类@Componentpublic class SimpleCalculate implements Calculate { public原创 2022-05-10 22:45:09 · 306 阅读 · 0 评论 -
Spring depends-on 和 懒加载(Lazy-initialized)
如果一个 bean 是另一个 bean 的依赖项,这意味着,一个 bean 被设置为另一个 bean 的属性。但是,有时候 beans 之间的依赖关系并不那么直接,比如,进行数据库驱动程序的注册时,就需要触发另一个类当中的静态初始化器。然而,当一个懒加载的 bean 是一个非懒加载 bean 的依赖项时,ApplicationContext 还是会在启动时创建这个懒加载的 bean,因为它必须满足非懒加载 bean 依赖项的完整性。通常,这种模式下可以快速的发现 beans 配置文件中的错误。原创 2021-02-22 16:05:32 · 370 阅读 · 1 评论 -
Spring JDBC声明式事务管理
Java事务的类型有三种:(1)JDBC事务:可以将多个 SQL 语句结合到一个事务中。JDBC 事务的一个缺点是事务的范围局限于一个数据库连接。一个 JDBC 事务不能跨越多个数据库。(2)JTA(Java Transaction API)事务:事务可以跨越多个数据库或多个DAO,使用也比较复杂。(3)容器事务:主要指的是J2EE应用服务器提供的事务管理,局限于EJB应用使用。Spring 实现JDBC声明式事务管理可以使用 Annotation 注解。使用注解实现可以减少代码之间的耦合度原创 2022-01-26 17:56:24 · 1391 阅读 · 0 评论 -
Spring JDBC 编程式事务
编程式事务管理是通过编写代码实现的事务管理,包括定义事务的开始、正常执行后的事务提交和异常时的事务回滚。Spring 出现以前,编程式事务管理是基于 POJO 应用的唯一选择。在 Hibernate 中,我们需要在代码中显式调用 beginTransaction()、commit()、rollback() 等事务管理相关的方法,这就是编程式事务管理。而通过 Spring 提供的事务管理 API,我们可以在代码中灵活控制事务的执行。下面根据在《Spring事务》一节讲解的 PlatformTransa原创 2022-01-25 11:11:18 · 1381 阅读 · 0 评论 -
Spring事务
目录编程式和声明式事务管理接口PlatformTransactionManager接口TransactionDefinition接口TransactionStatus接口事务(Transaction)是面向关系型数据库(RDBMS)企业应用程序的重要组成部分,用来确保数据的完整性和一致性。事务具有以下 4 个特性,即原子性、一致性、隔离性和持久性,这 4 个属性称为 ACID 特性。原子性(Atomicity):一个事务是一个不可分割的工作单位,事务中包括的动作要么都做要么都不转载 2022-01-25 10:38:43 · 91 阅读 · 0 评论 -
Spring JdbcTemplate类
Spring 针对数据库开发提供了 JdbcTemplate 类,该类封装了 JDBC,支持对数据库的所有操作。在 Spring 中,JDBC 的相关信息在配置文件中完成,其配置文件如下所示。<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http:/www.w3.org/2001/XMLSchem原创 2022-01-13 17:01:27 · 643 阅读 · 0 评论 -
JDBC框架和Spring JDBCTemplate
目录一、关于JDBC1、JDBC简介2、JDBC接口3、JDBC原理及工作流程1、加载JDBC驱动程序2、提供JDBC连接的URL3、创建数据库的连接4、创建一个Statement5、执行SQL语句6、处理结果7、关闭JDBC对象二、Spring JDBC框架1、JDBCTemplate介绍2、使用JDBCTemplate操作数据库三、存储过程存储过程的优点存储过程的缺点使用建议一、关于JDBC1、JDBC简介JDBC(Ja原创 2019-10-24 09:22:07 · 269 阅读 · 0 评论 -
Spring AOP(面向切面编程)
目录一、AOP面向切面编程二、Spring-AOP的简单实现1、定义被代理类的接口和实现类2、定义切面:@Aspect+@Component三、使用AOP环绕通知和注解实现权限验证1、自定义需要被解析的注解2、申明接口和接口的实现类3、定义切面,通过环绕通知增强方法-ProceedingJoinPoint四、execution()语法定义一、AOP面向切面编程AOP的全称是“Aspect Oriented Programming”,即面向切面编程,和 OOP(面.原创 2021-07-26 22:36:34 · 555 阅读 · 3 评论 -
Spring 自动装配示例
Bean 的装配可以理解为依赖关系注入,Bean 的装配方式也就是 Bean 的依赖注入方式。Spring 容器支持多种装配 Bean 的方式,如基于 XML的 Bean 装配、基于注解的 Bean 装配和自动装配等。// 常见的注入方式有,通过bean名称注入和通过bean类型注入。原创 2022-01-13 10:56:53 · 546 阅读 · 0 评论 -
Spring 依赖注入示例
Spring依赖注入(Dependency Injection,DI)和控制反转含义相同,它们是从两个角度描述的同一个概念。使用依赖注入可以更轻松的管理和测试应用程序。当某个 Java 实例需要另一个 Java 实例时,传统的方法是由调用者创建被调用者的实例(例如,使用 new 关键字获得被调用者实例),而使用 Spring 框架后,被调用者的实例不再由调用者创建,而是由 Spring 容器创建,这称为控制反转。Spring 容器在创建被调用者的实例时,会自动将调用者需要的对象实例注入给调用者,调用者.原创 2022-01-12 22:15:32 · 522 阅读 · 0 评论 -
Spring 的 BeanPostProcessor 接口使用示例
从Spring3.0,@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被 @Bean 注解的工厂方法,这些方法将被 Spring 容器扫描,并用于构建 bean 定义。原创 2019-10-17 12:44:44 · 359 阅读 · 0 评论 -
Spring Bean 的生命周期回调方法示例
实现 Spring Bean 的生命周期的回调,有以下几种方法实现 InitializingBean 接口重写其 afterPropertiesSet() 方法,实现 DisposableBean 接口重写 destroy() 方法在配置类中使用@Bean(initMethod = "init",destroyMethod = "destory") 注解指定利用 java 的 JSR250 规范中的标注在 init 方法上,@PreDestroy 标注在 destroy 方法上。原创 2019-10-18 18:12:57 · 1089 阅读 · 0 评论 -
Spring Bean 的生命周期
在传统的 Java 应用中,Bean 的生命周期很简单,使用关键字 new 实例化 Bean,当不需要该 Bean 时,由 Java 自动进行垃圾回收。Spring 中 Bean 的生命周期较复杂,可以表示为:Bean 实例化 -> Bean 的属性赋值 -> Bean 的初始化 -> Bean 的销毁。Spring 根据 Bean 的作用域来选择管理方式。对于 singleton 作用域的 Bean(单例模式)原创 2022-01-10 17:00:02 · 485 阅读 · 0 评论 -
Spring IoC 容器之 BeanFactory 修改中...
IoC 容器是 Spring 的核心,也可以称为 Spring 容器。Spring 通过 IoC 容器来管理对象的实例化和初始化,以及对象从创建到销毁的整个生命周期。Spring 中使用的对象都由 IoC 容器管理,不需要我们手动使用 new 运算符创建对象。由 IoC 容器管理的对象称为 Spring Bean,Spring Bean 就是 Java 对象,和使用 new 运算符创建的对象没有区别。Spring 通过读取 XML 或 Java 注解中的信息来获取哪些对象需要实例化。Spring 提供原创 2022-01-07 14:16:15 · 214 阅读 · 0 评论