spring
spring相关笔记
超级划水857
一直在路上
展开
-
19-spring声明式事务详解
一 简介@Transactional注解包含众多的属性,下面会依次介绍这些属性的作用isolation 事务的隔离级别propagation 事务的传播行为timeout 事务超时时间 当事务执行超时后,会自动终止并回滚 秒为单位readOnly 设置事务为只读事务rollbackFor 哪些异常需要进行回滚(class 数组)rollbackForClassName 哪些异常需要进行回滚(String 数组)noRollbackFor 哪些异常事务可以不回滚(class 数组)noR原创 2020-09-16 23:39:50 · 96 阅读 · 0 评论 -
18-spring声明式事务
一、简介事务是数据库操作的最小单元,是作为单个逻辑工作单元执行的一系列操作。事务本身具有原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Isolation)原子性(Atomicity) 事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做一致性(Consistency) 事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。 一致性是事务的最终目的,其他三个特性是保证一致性的约束隔离性(Isolation) 事务之间是原创 2020-09-12 17:02:17 · 163 阅读 · 0 评论 -
17-spring jdbcTemplate和namedParameterJdbcTemplate
一、简介下面的代码是jdbcTemplate的部分源码,包含了jdbcTemplate的部分常用API,熟悉使用即可。public class JdbcTemplate extends JdbcAccessor implements JdbcOperations { public JdbcTemplate() { } public JdbcTemplate(DataSource dataSource) { setDataSource(dataSource); afterProper原创 2020-09-12 16:45:54 · 78 阅读 · 0 评论 -
16-spring jdbcTemplate
一、简介jdbcTemplate 是spring提供的,用于操作数据库的一个模板类。二、java操作数据库jdk本身支持数据库的相关操作,相关的api在java.sql包下,下面的示例是一个java操作mysql数据库的示例(也是最原始的jdbc的写法)public class DBUtil { public void query(String sql){ Connection connection = null; PreparedStatement ps原创 2020-09-10 00:43:47 · 68 阅读 · 0 评论 -
15-spring aop 补充
一、简介之前几篇文章简单了说明了aop的一些基本的配置及使用,可以发现前面的文章中并没有给出aop获取方法执行结果和获取异常栈的方法,其实AOP中本身自带了两种通知,用来获取方法执行结果与异常栈。(一)@AfterReturning不同于@After注解,@AfterReturning注解虽然也是在方法执行之后执行,但是利用它可以获取方法的执行结果。@AfterReturning有一个returning的属性,用来标识,接收方法执行结果的变量,如下面的示例所示,用result(这个变量名是自定义的)原创 2020-09-06 21:37:23 · 125 阅读 · 0 评论 -
14-spring aop表达式详解
一、简介本文接上一篇13-spring aop配置详解,主要说明aop的切点表达式execution表达式的语法如下execution(modifiers-pattern? ret-type-pattern declaring-type-pattern?name-pattern(param-pattern) throws-pattern?)modifiers-pattern 表示方法的可见性,如public,protected;ret-type-pattern 表示方法的返回值类型,如int,原创 2020-09-06 11:23:22 · 504 阅读 · 1 评论 -
13-spring aop 配置详解
一、aop相关依赖要使用spring的aop功能需要导入如下依赖(理论上只需要导入aop和aspects就行了,但是如果只有aop和aspects可以使用aop的基本功能,但是此时只能代理接口,所以还需要导入外部依赖)<!--spring aop相关 --> <!-- https://mvnrepository.com/artifact/org.springframework/spring-aop --> <dependency> <groupId原创 2020-09-06 01:23:06 · 442 阅读 · 0 评论 -
12-spring aop简介
一、AOP简介AOP(Aspect Oriented Programming)也即面向切面编程,指在程序运行期间,将某段代码动态的织入到指定的方法的指定位置。AOP的底层是基于动态代理来实现的,作用就是丰富方法的功能、解耦;应用场景有很多如:作链路监控的时候,可以动态的为方法织入日志,这样每个方法出入口的时候,都有日志可寻,从而实现全链路的一个日志打印,从而达到链路监控的目的。而开发人员不需要关心这些日志打印的实现,可以保证每个方法的一个纯粹性。还有一个就是声明式事务的实现也是基于AOP的一个实现。二、原创 2020-09-05 22:07:21 · 68 阅读 · 0 评论 -
11-JDK动态代理
一、简介jdk的动态代理主要是依靠java反射中的Proxy类来实现的,且目前jdk的动态代理只能代理接口,无法代理类(因为Proxy.newProxyInstance(loader, interfaces, h)第二个入参传递的就是接口,反射过来也只能执行对应接口中的方法)。优缺点优点 能够扩展接口方法的功能,更加解耦,缺点 被代理的真实对象必须要实现接口,否则无法实现动态代理,而且代码编写复杂度相对较高实现步骤(一)创建接口跟真实对象示例中的接口是Learn接口,真实对象(被代理的对原创 2020-09-05 21:39:56 · 246 阅读 · 0 评论 -
10-spring的单元测试
一、依赖配置spring的单元测试需要导入如下依赖spring-test和junit<dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.3.9.RELEASE</version></dependency><dependency&g原创 2020-09-05 17:20:55 · 93 阅读 · 0 评论 -
09-@Autowired、@Qualifier、@Resource的区别
一、@Autowired流程分析当利用@ComponentScan注解配置了自动扫描后,类上带有对应注解(@Component、@Service…)的类,会被装配到spring容器中。此时如果需要调用这些bean可以通过@Autowired或者@Resource来实现将bean作为属性,注入到其他的bean中,方便调用。示例如下这样在UserService中就可以调用helloService的方法@Servicepublic class UserService { @Autowi原创 2020-09-05 16:58:20 · 91 阅读 · 0 评论 -
08-spring注解扫描补充
一、说明本文是对07-spring基于注解的配置的一个补充,在上一篇中,提到了spring注解配置的时候用到了一个注解扫描的配置<context:component-scan> or @ComponentScan,component-scan会有两个属性一个是exclude-fliter 一个是include-fliter这两个属性用来对component-scan进行一个扩展二、exclude-fliter(一) 对<context:component-scan>的扩展配置原创 2020-09-05 13:20:45 · 84 阅读 · 0 评论 -
07-spring基于注解的配置
一、简介spring 虽然可以通过xml配置,来实现对bean的管理,但是xml的配置还是太过繁琐,所以实际开发中更多的是基于注解的模式。spring提供了4个注解,用来注入bean(代替<bean id =“xx” class=“xxx.xxx.xx”>这种xml配置);分别为:@Controller 这个注解用来标识spring web工程的controller(控制器)层@Service 用来标识业务逻辑的处理类@Repository 用来标识dao层@Component 这个原创 2020-09-05 12:21:26 · 204 阅读 · 0 评论 -
06-spring 配置数据库连接池
一、依赖本示例数据库为mysql,连接池选用druid(现在基本不用c3p0了),要配置连接池需要除了spring的核心依赖外还需要另外导入mysql的驱动包以及druid的包<!-- 数据库连接池相关配置 --><dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.2原创 2020-09-02 23:58:52 · 561 阅读 · 0 评论 -
05-spring bean的后置处理器BeanPostProcessor
一、BeanPostProcessor 概述spring为我们提供了一个BeanPostProcessor接口,该接口扩展了bean创建时指定的init-method方法的功能。BeanPostProcessor接口有两个方法,用于在bean的初始化方法前后执行对应的方法 且相对于bean的init方法来说,BeanPostProcessor更具有通用性,它对spring中所有的bean都有效。二、示例MyBeanPostProcessor类MyBeanPostProcessor是自己新建的类,实原创 2020-09-02 00:05:23 · 59 阅读 · 0 评论 -
04-spring bean详解
一、spring bean的依赖关系首先需要清楚的是spring bean的创建顺序,默认情况下是根据bean.xml中的配置顺序来创建的 如果按照下面这样的配置,如果你在A、B、C三个类的构造器中都添加了打印语句,可以很明显看出 他会先执行A的构造方法,再执行B的构造方法,最后打印C的构造方法。<bean id = "a" class="com.xxx.spring.demo.entity.A"/><bean id = "b" class="com.xxx.spring.demo.原创 2020-08-31 23:49:18 · 147 阅读 · 0 评论 -
03-spring xml依赖注入配置详解
一、简介Spring依赖注入有两种方式一种是基于注解的方式一种是基于xml的方式。这里主要介绍xml如何配置。二、spring beans.xml基本配置beans.xml可以在官方文档中找到,我这里摘抄了下来,下面的xml就是Spring最基本的beans.xml的一个配置<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xml原创 2020-08-31 00:03:23 · 247 阅读 · 0 评论 -
02-spring demo工程搭建
一、环境本工程只是一个Spring框架学习的一个Demo工程,本次搭建使用的ide是idea,版本是ULTIMETA 2017.3 jdk版本是1.8,spring版本是4.3.9.RELEASE,本工程使用maven做依赖管理,(通过lib文件夹引入jar包的方式太古老了,在此不做介绍, 如果有对maven不熟悉的,请自行百度)二、创建demo工程(1) 打开idea 点击【File】–>【New】–>【Module】(2) 在弹出的菜单中选择【Maven】选择好SDK然后点击原创 2020-08-30 23:24:33 · 440 阅读 · 0 评论 -
01-Spring简介
一、框架框架是一种高度抽取可重用代码的一种设计,具有高度的通用性二、Spring介绍Spring是一个容器,它包含并且管理对象的生命周期 Spring官网优点非侵入性,基于Spring开发的应用可以不依赖Spring的API依赖注入 DI(Dependency Injection)即可以通过配置来创建对象 方便模块之间的解耦面向切面编程 AOP(Aspect Oriented Programming) 即在原有的方法前后织入其他功能 用于丰富功能 使得业务开发者。只需要关注业务本身。组件原创 2020-08-30 23:00:32 · 74 阅读 · 0 评论