spring
文章平均质量分 94
RB_VER
这个作者很懒,什么都没留下…
展开
-
Spring事务的7种传播行为
事务传播行为什么叫事务传播行为?听起来挺高端的,其实很简单。即然是传播,那么至少有两个东西,才可以发生传播。单体不存在传播这个行为。事务传播行为(propagation behavior)指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行。例如:methodA事务方法调用methodB事务方法时,methodB是继续在调用者methodA的事务中运行呢,还是为自己开启一个新事务运行,这就是由methodB的事务传播行为决定的。Spring定义了七种传播行为:1、PROPAG转载 2021-07-18 15:33:59 · 10285 阅读 · 3 评论 -
Spring中基于XML的编程式事务控制
这种方式代码比较冗余,所以不常用。pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi...原创 2020-04-27 16:25:01 · 139 阅读 · 0 评论 -
Spring中事务控制
Java EE体系进行分层开发,事务处理位于业务层,spring提供了分层设计业务层的事务处理解决方案。spring框架为我们提供了一组事务控制的接口,这组接口在spring-tx-5.0.2.RELEASE.jar中。spring中的事务控制都是基于AOP的。Spring中基于XML的声明式事务控制Spring中基于注解的声明式事务控制Spring中基于纯注解的声明式事务控制...原创 2020-04-27 12:13:05 · 107 阅读 · 0 评论 -
Spring中基于纯注解的声明式事务控制
pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="h...原创 2020-04-27 12:12:31 · 205 阅读 · 0 评论 -
Spring中基于注解的声明式事务控制
spring中基于注解的声明式事务控制配置步骤:配置事务管理器。开启spring对注解事务的支持。在需要事务支持的地方使用@Transactional注解示例:pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" ...原创 2020-04-27 11:25:24 · 152 阅读 · 0 评论 -
Spring中基于XML的声明式事务控制
spring中基于xml的声明式事务控制配置步骤:配置事务管理器。配置事务的通知:此时我们需要导入事务的约束,同时也需要aop的。使用tx:advice标签配置事务通知。属性:id:给事务通知起一个唯一标识。transaction-manager:给事务通知提供一个事务管理器引用。配置aop中的通用切入点表达式。建立事务通知和切入点表达式的对应关系。配置事务的属性。在事务的通...原创 2020-04-27 11:00:39 · 144 阅读 · 0 评论 -
基于注解的AOP实现事务控制
需要注意在使用注解时,后置通知与异常通知执行顺序颠倒,所以要用环绕通知来解决此问题。pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSche...原创 2020-04-26 16:41:46 · 267 阅读 · 0 评论 -
基于XML的AOP实现事务控制
原理可以参考使用动态代理实现事务控制pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xs...原创 2020-04-26 15:43:46 · 172 阅读 · 0 评论 -
Spring中的JdbcTemplate
JdbcTemplate的作用:用于和数据库的交互,实现对表的CRUD操作。示例:pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSche...原创 2020-04-26 11:37:20 · 85 阅读 · 0 评论 -
Spring中基于注解的AOP配置
在使用注解时,spring的四个通知会出现顺序问题,当使用环绕通知时就可以解决。所以在使用注解方法时,更推荐使用环绕通知方式。示例:pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http...原创 2020-04-25 18:50:34 · 137 阅读 · 0 评论 -
Spring AOP中的环绕通知
通过对比动态代理中的环绕通知代码,发现动态代理的环绕通知有明确的切入点方法调用,而我们的代码中没有。spring框架为我们提供了一个接口:ProceedingJoinPoint。该接口有一个方法proceed(),此方法就相当于明确调用切入点方法。该接口可以作为环绕通知的方法参数,在程序执行时,spring框架会为我们提供该接口的实现类供我们使用。spring中环绕通知:它是spring框架为...原创 2020-04-25 18:15:09 · 727 阅读 · 0 评论 -
Spring AOP中通用化切入点表达式
在Spring AOP中四种常用通知类型的使用的基础上进行修改:bean.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema...原创 2020-04-25 15:20:12 · 171 阅读 · 0 评论 -
Spring AOP中四种常用通知类型的使用
前置通知:在切入点方法执行之前执行。后置通知:在切入点方法正常执行之后执行。异常通知:在切入点方法执行产生异常之后执行。最终通知:无论切入点方法是否正常执行,它都会在其后面执行。异常通知和后置通知永远只能执行一个。示例:pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven...原创 2020-04-25 11:53:37 · 795 阅读 · 0 评论 -
Spring AOP中切入点表达式的写法
切入点表达式的写法:关键字:execution(表达式)表达式:访问修饰符 返回值 包名,包名,… 类名 方法名(参数列表)访问修饰符可以省略。返回值可以使用通配符,表示任意返回值。包名可以使用通配符表示任意包,但是有几级包就需要写几个*。包名可以使用..表示当前包及其子包。类名和方法名都可以使用*来实现通配。参数列表:可以直接写数据类型:基本类型直接写名称、引用类型写包名.类名的...原创 2020-04-25 11:16:08 · 561 阅读 · 0 评论 -
Spring中基于XML的AOP
配置步骤:把通知bean也交给spring来管理。使用aop:config标签表明开始AOP的配置。使用aop:aspect标签表明开始配置切面。id属性:是给切面提供唯一标志。ref属性:指定通知类bean的id。在aop:aspect标签的内部,使用对应的标签来配置通知的类型。aop:before:表示配置前置通知。method属性:用于指定哪个方法是前置通知。pointc...原创 2020-04-25 10:45:14 · 113 阅读 · 0 评论 -
Spring种AOP的细节
AOP相关术语Joinpoint(连接点):所谓连接点是指那些被拦截到的点。在spring中,这些点指的是方法,因为spring只支持方法类型的连接点。(举例,业务层接口所有方法)Pointcut(切入点):所谓切入点是指我们要对哪些Joinpoint进行拦截的定义。(举例,业务层接口所有方法中被增强的方法)。所有的切入点都是连接点,但不是所有的连接点都是切入点。Advice(通知/增强)...原创 2020-04-25 10:02:11 · 109 阅读 · 0 评论 -
AOP的概念
AOPAOP全称Aspect Oriented Programming,面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。它是软件开发中的一个热点,也是spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各个部分之间耦合度降低,提高程序的可重用性,同时提高了开发效率。简单地说,它就是把我们程序重复的...原创 2020-04-25 08:12:14 · 358 阅读 · 0 评论 -
使用动态代理实现事务控制
对分析事务的问题【初探事务】进行改进。pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...原创 2020-04-24 16:16:37 · 419 阅读 · 0 评论 -
动态代理的分析
动态代理:特点:字节码随用随创建,随用随加载。作用:不修改源码的基础上,对方法增强分类:基于接口的动态代理基于子类的动态代理基于接口的动态代理:涉及的类:Proxy提供者:JDK官方如何创建代理对象:使用Proxy类中的newProxyInstance方法。创建代理对象的要求:被代理类最少实现一个接口,如果没有则不能使用。newProxyInstance的参数:Cla...原创 2020-04-24 15:16:41 · 129 阅读 · 0 评论 -
分析事务的问题【初探事务】
我们先实现一个可以转张的项目:pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:s...原创 2020-04-23 16:35:02 · 150 阅读 · 0 评论 -
Spring整合Junit
应用程序的入口是main方法,Junit集成了一个main方法,该方法就会判断当前测试类中哪些方法有@Test注解,Junit就会让有@Test注解的方法执行,Junit不会管我们是否采用spring框架,在执行测试方法时,Junit根本不知道我们是不是使用了spring框架,所以也就不会为我们读取配置文件或配置类创建的spring核心容器。所以我们可知,当测试方法执行时,没有IoC容器,就算写...原创 2020-04-21 17:47:43 · 109 阅读 · 0 评论 -
Spring中@Qualifier注解
本文对Spring中常用的IoC注解中@Qualifier注解进行补充。当一个对象有多个实现类时,可以用@Qualifier注解来选择使用。示例(在Spring中@PropertySource注解基础上):JdbcConfig类:package config;import com.mchange.v2.c3p0.ComboPooledDataSource;import org.apa...原创 2020-04-21 16:30:08 · 526 阅读 · 0 评论 -
Spring中@PropertySource注解
作用:用于指定properties文件的位置。属性:value:指定文件的名称和路径。关键字:classpath,表示类路径下。示例(在Spring中@Import注解基础上):jdbcConfig.propertiesjdbc.driver=com.mysql.cj.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/springtes...原创 2020-04-21 16:04:49 · 241 阅读 · 0 评论 -
Spring中@Import注解
作用:用于导入其他的配置类。属性:value:用于指定其他配置类的字节码。当我们使用@Import之后,有@Import注解的类就是父配置类,而导入的都是子配置类。示例(在Spring中@Configuration、@ComponentScan和@Bean注解基础上):SpringConfiguration类:package config;import com.mchange....原创 2020-04-21 15:31:48 · 167 阅读 · 0 评论 -
Spring中@Scope注解
基于Spring中@Configuration、@ComponentScan和@Bean注解的示例进行修改:@Scope可以修改对象的创建是单例还是多例。示例:SpringConfiguration类:package config;import com.mchange.v2.c3p0.ComboPooledDataSource;import org.apache.commons.db...原创 2020-04-21 11:07:02 · 243 阅读 · 0 评论 -
Spring中@Configuration、@ComponentScan和@Bean注解
@Configuration作用:指定当前类是一个配置类。@ComponentScan作用:用于通过注解指定spring在创建容器时要扫描的包。属性:value:它和basePackages的作用是一样的,都是用于指定创建容器时要扫描的包。我们使用此注解就等同于在xml中配置了<context:component-scan base-package="com.qublog">...原创 2020-04-21 11:00:42 · 593 阅读 · 0 评论 -
基于注解的IoC案例
与基于XML配置文件的IoC案例实现相同功能。pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...原创 2020-04-21 09:12:39 · 111 阅读 · 0 评论 -
基于XML配置文件的IoC案例
该案例使用dbutils作为数据持久层,spring实现业务层,实现CRUD。pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-...原创 2020-04-21 08:46:21 · 128 阅读 · 0 评论 -
Spring中常用的IoC注解
注解分为以下几个类型:用于创建对象的:它们的作用就和在XML文件中编写一个标签实现的功能是一样的。用于注入数据的:它们的作用就和在XML文件中的bean标签中写一个property标签的作用是一样的。用于改变作用范围的:它们的作用就和在bean标签中使用scope属性实现的功能是一样的。和生命周期相关的:它们的作用就和bean标签中使用init-method和destroy-method...原创 2020-04-20 11:19:43 · 214 阅读 · 0 评论 -
Spring中的依赖注入(Dependency Injection,DI)
IoC的作用:降低程序间的依赖关系(耦合)。依赖关系就是在当前类中需要用到其他类的对象,由spring为我们提供,我们只需要在配置文件中说明。依赖关系的管理以后都交给了spring来维护。依赖关系的维护就称之为依赖注入。依赖注入:能注入的数据有三类:基本类型和String其他的bean类型(在配置文件中或注解配置过的bean)复杂类型/集合类型注入的方式有三种:使用构造函数提...原创 2020-04-19 15:04:17 · 300 阅读 · 0 评论 -
Spring中复杂类型的依赖注入
用于给List结构集合注入的标签:list、array、set用于给Map结构集合注入的标签:map、props结构相同标签可以互换。示例:pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=...原创 2020-04-19 11:50:11 · 203 阅读 · 0 评论 -
Spring中使用set方法进行依赖注入
使用的标签:property出现的位置:bean标签的内部标签的属性:name:用于指定注入时,所调用的set方法名称value:用于提供基本类型和String类型的数据ref:用于指定其他的bean类型数据,它指的就是在spring的IoC核心容器中出现过的bean对象。优势:创建对象时,没有明确的限制,可以直接使用默认构造函数。弊端:如果有某个成员必须有值,则获取对象时有可能...原创 2020-04-19 11:25:24 · 1122 阅读 · 0 评论 -
Spring中使用构造函数进行依赖注入
基于构造函数的依赖注入:使用的标签:constructor-arg标签出现的位置:bean标签的内部标签的属性:type:用于指定要注入的数据的数据类型,该数据类型也是构造函数中某个或某些参数的类型。index:用于指定要注入的数据给构造函数中指定索引位置的参数赋值。索引的位置是从0开始。name:用于指定给构造函数中指定名称的参数赋值。(常用)value:用于提供基本类型和Str...原创 2020-04-19 11:07:22 · 735 阅读 · 0 评论 -
Spring对bean的管理细节
创建bean的三种方式第一种方式:使用默认构造函数创建。在spring的配置文件中使用bean标签,配以id和class属性之后,并且没有其他属性和标签时,采用的就是默认构造函数创建bean对象,此时如果类中没有默认构造函数,则对象无法创建。以下面代码为例:pom.xml<?xml version="1.0" encoding="UTF-8"?><project xm...原创 2020-04-19 08:52:03 · 216 阅读 · 0 评论 -
Spring中BeanFactory和ApplicationContext的区别
ApplicationContext:它构建核心容器时,创建对象采取的策略是采用立即加载的方式,也就是说,只要一读取完配置文件马上就创建配置文件中的配置对象。BeanFactory:它在构建核心容器时,创建对象采取的策略是采用延迟加载的方式,也就是说,什么时候根据id获取对象了,什么时候才真正创建对象。在Spring中ApplicationContext的三个实现类的基础上进行测试和修改:首...原创 2020-04-18 15:50:06 · 340 阅读 · 0 评论 -
Spring中ApplicationContext的三个实现类
pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="h...原创 2020-04-18 15:11:30 · 480 阅读 · 0 评论 -
IoC的概念和作用
IoC(Inversion of Control)控制反转把创建对象的权利交给框架,是框架的重要特征,并非面向对象编程的专业术语,包括依赖注入(Dependency Injection,DI)和依赖查找(Dependency Lookup)。它的作用是降低程序间的耦合(依赖关系)。原理可以参考:使用工厂模式解耦使用工厂模式解耦的单例版本...原创 2020-04-17 16:32:11 · 649 阅读 · 0 评论 -
Spring概述
Spring是分层的java EE应用全栈轻量级开源框架,以IoC(Inverse of Control)和AOP(Aspect Oriented Programming)为内核,提供了展现层Spring MVC和持久层Spring JDBC以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的java EE企业级应用框架。Spring的优势方...原创 2020-04-17 16:12:11 · 94 阅读 · 0 评论 -
使用工厂模式解耦的单例版本
在使用工厂模式解耦的基础上进行修改:Client类:package com.qublog.ui;import com.qublog.factory.BeanFactory;import com.qublog.service.AccountService;import com.qublog.service.impl.AccountServiceImpl;//模拟一个表现层,用于调用业...原创 2020-04-17 16:09:03 · 182 阅读 · 0 评论 -
使用工厂模式解耦
AccountDao接口:package com.qublog.dao;//账户的持久层接口public interface AccountDao { //模拟保存账户 void saveAccount();}AccountDaoImpl类:package com.qublog.dao.impl;import com.qublog.dao.AccountDao...原创 2020-04-17 08:54:04 · 187 阅读 · 0 评论