【原创】Spring框架
Spring基础
1.Spring概述:
Spring核心是控制反转(IOC)和面向切面编程(AOP)。主要作用是实现代码的解耦,如Spring的IOC完成对对象的创建和管理,完成了对对象的创建和调用的解耦。 Spring本质上是一个容器,是内存中的一块空间。容器中存储Bean对象。
2.Spring的Ioc
(1)SpringIoc概念: SpringIoc是一个理论,一个指导思想。分为控制和反转两部分。 控制:对象的创建,属性的赋值,对象生命周期管理等。 反转:将管理对象的权限转移给代码之外的容器实现。 (2)Ioc的技术实现DI(依赖注入): Spring框架,使用DI完成对象的创建和属性的注入。 Spirng底层通过使用反射机制,通过反射完成对象的创建和属性的赋值(Xml文件中的Bean标签中的Class属性指定了反射需要创建对象的完全限定名。) Spring容器实际将对象保存在ConcurrentHashMap(并发编程的Map集合)中。Map的Key为bean标签的id,Value为bean标签的对象,加载Spring容器,Spring容器就会自动为Bean标签创建对象。 (3)Spring中的自动注入 Spring可以根据某些规则(byName,byType)给类中的属性完成赋值,只对引用类型有效。 byName(按名称注入):java类中引用类型属性名称和Spring容器中的Bean对象的id一致。且数据类型也是一致的,使用bean标签中autowire属性完成注入。 byType(根据类型注入):java类中引用类型的数据类型和Spring容器中bean的class值是同源关系(需要赋值的属性类型和bean中的class的关系必须为父子关系或者接口和实现类的关系),使用bean标签中autowire属性完成注入。 (4)Spring中的常用注解: @Component注解:使用在类上,创建对象并将对象放入Spring容器中。 @Repository注解:使用在dao层实现类,表示dao对象,可以访问数据库 @Service注解:放在业务层实现类上,表示业务层对象,业务层有事务的功能。 @Controller注解:放在控制器类上,表示创建控制器对象,控制器对象可以接受和处理请求。 @Value注解:使用在属性上或者在set方法上,用于给简单数据类型的属性赋值。 @Autowire注解:通过byType或byName的方式完成对引用数据类型的属性的自动注入,默认是byType自动注入。可以添加到属性上,也可以添加到set方法上。 @Resource注解:JDK提供的给属性赋值,默认是按照byName的方式进行对引用数据类型的属性赋值,可以加在属性上也可以加在set方法上。 (5)Context的常用标签 开启组件扫描,开启了该功能才能让注解生效。 用于将外部的属性文件(Properties)文件保存到Spring中,在注解上通过${key}获取properties文件中的内容。
3.Spring的Aop(面向切面编程)
(1)Aop概念: Aop(Aspect Orient Programming):面向切面编程。 Aspect:切面,给业务方法增加功能,一般是为非业务方法,切面功能一般可以复用。例如:日志记录,事务控制,权限检查,统计信息等。 (2)Aop作用: Aop是一个动态思想,在程序运行期间,创建代理对象,使用代理对象执行方法时,增加切面的功能,代理对象是存在在内存中的。 可以使切面功能复用,实现业务功能和非业务功能进行解耦合。 (3)Aop中的术语: Aspect:切面,给业务方法增加功能。 JoinPoint:连接点,连接切面的业务方法。 Pointcut:切入点,是一个或多个连接点的集合。表示这些方法执行时,都能增加切面的功能。表示切面的执行位置。 target:目标对象,指定增强功能的对象。 Advice:通知,指定切面的执行时间。 Aop中的三要素:Aspect,Pointcyt,Advice
4.Spring实现事务控制
(1)事务的概念: 事务是多条Sql语句的集合,作为一个整体执行,要么都成功,要么都失败。 (2)JDBC和Mybatis完成事务管理: ①JDBC完成事务管理:
public void updateUser(){
Connection conn = new Connection();
conn.setAutoCommit(false);
insert();
conn.commit();
}
②Maybatis完成事务管理:
public void updateUser(){
SqlSession session = SqlSession.openSession(false);
try{
session.insert();
session.update();
session.commit();
}catch(Exception e){
session.rollback();
}
}
(3)通过Spring完成对事务的管理: 事务管理器接口:PlatformTransactionManager,用于针对不同事务管理技术的公共接口,所有事务管理技术(如JDBC或Mybatis)都是通过实现该接口实现事务的管理。JDBC和Mybatis访问数据库的事务管理器实现类为:DataSorceTranactionManager。
**Spring框架本质是使用Aop的环绕通知完成事务管理。**
5.Spring使用注解@Transaction控制事务
(1)@Transactional注解,使用注解的属性完成事务的控制(隔离级别,传播行为,超时) (2)@Transactional注解的属性(使用在业务方法的上面)
①propagation:事务的传播行为,Propagation类提供了枚举值,完成事务传播行为的设置。
②isolation:事务的隔离级别,Isolation类提供了枚举值,完成事务隔离级别的设置。
③redaOnly:boolean类型,表示数据库操作是否为只读操作。默认为false。
④timeout:事务超时,默认是-1,整数值,单位是秒。
⑤rollbackFor:表示回滚异常类列表,是个数组,每个值都是异常类型的Class。
⑥rollbackForClassName:表示回滚的异常类列表,是String类ing的值。
⑤noRollbackFor:表示不需要回滚异常类列表,是个数组,每个值都是异常类型的Class。
⑥noRollbackForClassName:表示不需要回滚的异常类列表,是String类型的值。
(2)使用@Transactional注解时配置文件的配置:
①声明事务管理器。
②开启注解驱动。
6.Spring使用Aspectj框架控制事务
使用aspectj的Aop完成声明式事务控制。 操作步骤: (1).实例化事务管理器对象 (2).配置事务切面 (3).进行aop织入
相关文章
- spring boot 过滤器_拦截器和过滤器的区别面试
- Spring学习笔记(十八)——spring日志框架的配置和使用
- Spring MVC框架:第七章:REST架构风格
- spring-mybatis整合-SqlSessionTemplate
- Spring MVC 框架学习(四)----连接程序
- 简单介绍一下Spring / java中Spring框架7大核心模块的作用,如何在面试中侃侃而谈?/ Spring体系常用项目一览
- 详解Java中的Spring框架
- Java Spring框架 (底层原理+入门)
- Spring Boot框架下实现Excel服务端导入导出
- Spring MVC框架:第十五章:多IOC容器整合
- spring spel表达式_Substring
- spring boot整合shiro_Spring框架介绍及使用
- Spring Batch批处理框架,真心强啊!!
- spring-boot:The following method did not exist: com.google.gson.GsonBuilder.setLenient()
- Spring MVC 的请求映射与参数
- Spring Boot 安全框架 Spring Security 入门
- Java框架Spring入门-第一个spring项目
- 软件测试|Spring boot 之 RestTemplate
- Spring Cloud Zuul 过滤器拆分serivceId和请求路径
- Spring Cloud Gateway微服务网关
- Spring的cglib代理类无法取到被代理类的成员属性
- 【愚公系列】2023年04月 Java教学课程 139-Spring MVC框架的前后端数据交互
- spring cloud 之 Feign 使用HTTP请求远程服务详解架构师
- spring Boot之初体验详解编程语言
- spring原理案例-基本项目搭建 03 创建工程运行测试 spring ioc原理实例示例详解编程语言
- Spring异常重试框架Spring Retry详解编程语言
- spring 学习详解编程语言
- spring使用Spring整合Redis和Jedis构建高性能应用(redisjedis与)
- Spring框架致力于搭建基于MSSQL的稳健开发体系(spring mssql)