spring揭秘
文章平均质量分 95
tomjourney
积善之家 必有余庆
展开
-
spring揭秘20-spring事务02-编程式事务与声明式事务管理
本文总结自《spring揭秘》,作者王福强,非常棒的一本书,墙裂推荐;事务管理有2种实现方式,包括编程式事务管理, 声明式事务管理;1)spring的编程式事务管理有2种方式:【BusiPlatformTransactionManager】【代码解说】1)使用PlatformTransactionManager管理事务太过底层;可以借助模版方法模式与回调接口对PlatformTransactionManager事务管理逻辑进行封装,即使用TransactionTemplate进行编程式事务管理;1)Tra原创 2024-09-08 17:38:57 · 1312 阅读 · 0 评论 -
spring揭秘19-spring事务01-事务抽象
1)spring对事务元素进行抽象, 客户端仅按照统一的编程模型管理事务,而不用关心数据访问技术以及具体要访问什么类型的事务资源;此外:spring事务管理与spring提供的数据访问技术(如JdbcTemplate)进行结合;2)spring事务框架设计的基本原则: 让事务管理逻辑与数据访问逻辑解耦;spring揭秘15-spring集成数据访问技术(orm框架)总结事务隔离级别;isolation;事务传播行为;事务超时时间;timeout;是否为只读事务;readOnly;原创 2024-09-08 17:16:20 · 1351 阅读 · 0 评论 -
spring揭秘15-spring集成数据访问技术(orm框架)总结
1)数据访问资源管理,通过模版方法模式来建模(如JdbcTemplate,HibernateTemplate模版类);而具体的数据访问逻辑统一由回调接口提供(策略模式,如PreparedStatementCallback,HibernateCallback回调接口);从而将数据访问资源管理和具体数据访问逻辑解耦开;【JdbcTemplate#execute()】管理数据访问资源// .......// 获取连接try {// 创建预编译语句// 设置配置。原创 2024-08-30 16:21:19 · 663 阅读 · 0 评论 -
spring揭秘14-JdbcTemplate概述与使用操作对象访问数据
1)使用jdbc操作数据库代码try {= null) {try {System.out.println("关闭statement成功");System.out.println("关闭statement异常");// 仅演示,不要这么做= null) {try {System.out.println("关闭connection成功");System.out.println("关闭connection异常");// 仅演示,不要这么做。原创 2024-08-29 14:51:25 · 917 阅读 · 0 评论 -
spring揭秘12-aop06-aop总结及织入代码示例
本文总结自《spring揭秘》,作者王福强,非常棒的一本书,墙裂推荐;1)spring aop博文列表:2)以上aop详细内容总结如下;1)切点JoinPoint: 被织入切面逻辑的程序位置(程序执行点), 如调用方调用目标对象target的方法method1的调用位置或程序执行点;【1.2】 切点表达式Pointcut1)切点表达式Pointcut:描述切点位置的表达式;只有匹配的pointcut表达式的切点才会被织入横切逻辑;(简单理解为是织入条件)1) 横切逻辑Advice:被织入到切点的横切原创 2024-08-25 14:46:59 · 979 阅读 · 0 评论 -
spring揭秘11-aop05-aop应用经典场景及目标对象内部方法调用无法被拦截
表面看,织入器把横切逻辑或通知织入到与pointcut匹配的目标对象(或目标方法);但实际上,横切逻辑或通知是织入到代理对象;代理对象与目标对象有着相同的方法(JDK动态代理实现aop,则代理对象与目标对象实现相同接口;CGLIB动态代理,则代理对象继承目标类 );调用代理对象的方法,代理对象根据通知类型执行横切逻辑(前置或后置),接着执行目标对象方法;即通过代理对象调用方法才会被拦截,而通过目标对象本身调用方法不会被拦截;2)通过代理对象调用方法才会被拦截,而通过目标对象本身调用方法不会被拦截;原创 2024-08-24 21:37:33 · 724 阅读 · 0 评论 -
spring揭秘10-aop04-基于AspectJ类库注解织入横切逻辑
本文总结自《spring揭秘》,作者王福强,非常棒的一本书,墙裂推荐;1)概述:@AspectJ代表一种定义Aspect切面的风格,让我们能够以POJO形式定义Aspect,没有其他接口定义限制; 唯一需要的是使用相应的注解标注这些Aspect定义的POJO类; spring aop会根据注解扫描出Aspect类,然后织入横切逻辑;1)通过AspectJ类库注解重构切面(方法执行耗时统计):【ManNoItfCallTaskAspectjAnnotationMain】基于AspectJ注解织入横切逻辑测试m原创 2024-08-24 21:21:57 · 919 阅读 · 0 评论 -
spring揭秘09-aop03-aop织入器织入横切逻辑与自动织入
本文总结自《spring揭秘》,作者王福强,非常棒的一本书,墙裂推荐;本文主要介绍了织入器,织入方式(手工织入,半自动织入,全自动织入), 目标对象源TargetSource;1)使用织入器ProxyFactory 需要指定2个最基本的对象:2)回顾: spring使用动态代理实现aop:1)基于接口的代理: 底层实现是JDK动态代理, 要求目标类实现接口(代理结果: 代理对象与目标对象实现相同接口,它们是兄弟关系 );2)业务场景:为方法调用织入上下文访问通知【BasedItfProxyFactoryMa原创 2024-08-24 14:57:58 · 622 阅读 · 0 评论 -
spring揭秘09-aop02-aop基本要素抽象与通知及切面织入
1) 自定义静态方法匹配器Pointcut: 实现 StaticMethodMatcherPointcut 抽象类;@Override2)自定义动态方法匹配器Pointcut: 实现 DynamicMethodMatcherPointcut抽象类;@Override1)Introduction Advice可以在不改动目标类定义的情况下, 为目标类添加新的属性和行为;Introduction引入型通知: 在不改动目标类的情况下,为目标类引入新的属性和方法 (原创 2024-08-22 09:40:51 · 860 阅读 · 0 评论 -
spring揭秘07-aop01-aop基本要素及代理模式3种实现
1)自定义加载器: 加载器通过读取外部文件规定的织入规则和必要信息,在加载class文件时就把切面逻辑织入到class文件,然后把改动后的class文件交给jvm运行;AspectJ项目的AspectWerkz框架采用的是自定义类加载器实现AOP;缺点: 某些应用服务器会控制整个类加载器,用户可能无法自定义类加载器的情况;原创 2024-08-20 21:56:05 · 948 阅读 · 0 评论 -
spring揭秘06-Autowired自动绑定依赖及组件自动扫描
Resource注解可以替代 @Autowired 与 @Qualilfier这2个注解结合的功能,即根据beanName到spring容器中查找匹配的bean,并注入依赖关系到当前bean(如Jsr250AnnotationBookAppService);原创 2024-08-16 20:21:37 · 657 阅读 · 1 评论 -
spring揭秘05-ApplicationContext
Spring有2种ioc容器,BeanFactory,ApplicationContext;其中ApplicationContext 继承自 BeanFactory ,是高级容器,提供了更加丰富的功能;ApplicationContext 具体实现类;FileSystemXmlApplicationContext: 从文件系统加载bean及相关资源的ApplicationContext实现;原创 2024-08-15 17:13:32 · 725 阅读 · 0 评论 -
spring揭秘00-ioc定义与ioc容器及集成工厂模式
1.Ioc控制反转,别名是依赖注入DI;(1)反转:就反转在让你从原来的事事必躬亲,转变为现在的享受服务(这是ioc提出的价值所在(2)通常情况下: 被注入对象直接依赖于被依赖对象;但是在IOC场景中,被注入对象与被依赖对象通过IOC服务提供者来打交道,所有的被注入对象和被依赖对象都由IOC服务提供者统一管理;如ioc容器就是一个ioc服务提供者;原创 2024-08-15 09:10:52 · 913 阅读 · 0 评论 -
spring揭秘01-spring容器启动过程分析
应用场景: xml配置的bean信息都是字符串,但最终都要要转换为bean对象的,从字符串类型到对象类型的转换,就是由CustomerEditorConfigurer(EditorConfigurer)来完成的;只要为每种对象类型提供一个 PropertyEditor,就可以做类型转换Spring 提供的PropertyEditor列表(1) StringArrayPropertyEditor:把符合csv格式的字符串转换为String[] 数组的形式;原创 2024-08-14 09:37:24 · 695 阅读 · 0 评论 -
spring揭秘02-springbean生命周期(实例化过程)
容器在启动阶段,仅仅收集了 BeanDefinition,来保存实例化阶段将要用到的必要信息;只有当请求方请求某个对象实例时,才有可能调用getBean()方法触发bean实例化;对于BeanFactory, 对象实例化默认采用延迟初始化;即当对象被请求时,才实例化;对于ApplicationContext,容器启动完成后会实例化所有bean;即容器启动完成后,紧接着调用getBean() 方法实例化所有bean;原创 2024-08-14 07:54:26 · 875 阅读 · 0 评论