1分钟了解Spring:IOC、AOP、事务(Spring)

本文深入探讨了Spring框架的核心特性,包括IOC(控制反转)的概念及其XML与注解两种实现方式,依赖注入的原理和注解使用。接着介绍了AOP(面向切面编程)的用途,以及SpringAOP的配置和应用。此外,还讨论了Spring声明式事务管理和事务隔离级别。最后,简述了Spring整合Mybatis的声明式事务处理,为开发者提供了全面理解Spring框架的指导。
摘要由CSDN通过智能技术生成

一、从Spring官方文档再次了解Spring

  1. 首先登录Spring官方文档(非常有用):Core Technologies
  2. 理解一些启动服务基本流程概念:举例redis-service服务依靠redis-config配置文件来启动Redis、Tomcat服务依靠conf文件setting.xml启动服务、web服务依靠web.xml配置文件启动服务。同理,在Maven中引入SpringIOC依赖也相当是引入一种service服务,这service服务需要用配置文件.xml文件进行配置(现在几乎改用注解,如@Controller),然后才能启动使用该服务。(------->SpringBoot:起步依赖、自动配置bean/默认值,将会不再用引入依赖和设置繁琐的配置文件!)
  3. ------------为什么要引入Spring框架-----------
  4. 优点是:简化开发、非入侵式的框架(解耦1,对原项目没任何影响)、控制反转IOC/面向切面AOP(Spring作为独立个体的特性)、支持事务的处理(Spring作为独特个体特性,声明式事务)、支持框架整合,方便测试(Spring作为粘合剂,将java与Mybatis、Junit整合...)
  5. 缺点是:Spring下的SpringBoot发展太久,配置繁琐!

----------------------------------先了解SpringIOC的xml和注解两种方式------------------------------------------

  1. --------------控制反转IOC-----------------对象由Spring装配、托管、管理----
  2. 概念:生成对象的控制权由程序员变成用户(现在用户转变成SpringIOC容器管理)。原来:程序员写好程序,留了API,用户只传入参数调用API生成对象(该对象由程序员已写好的,不可改变对象的类)。现在:程序员写好程序,留了API,API的参数就是对象的类型,用户想调用什么对象,就自己选择后传入参数即可(像set方法),所以对象的产生类型的控制权,是在用户手上,而不在程序员手上!所以叫控制反转!这样的好处是,程序员只需要关心业务,尽可能实现客户的业务功能代码,客户怎么使用,由他们自己决定!
  3. 如何使用IOC:该过程是Spring创造了对象,所以叫控制反转:(部分图片来源网络)(在.xml中注册bean(了解.xml方式,再了解注解方式@Component),托管类在IOC容器。若要属性注入,类上一定要写seter才能实现属性注入!可用lombok注解代替。)(tips:多个.xml配置文件,用import实现合并.xml。若注解方式是@Import)(Spring上下文对象:ApplicationContext;Servlet上下文对象:HttpServletContext。HttpServletContext后来将被ApplicationContext管理,还可以来解决http的bens的作用域)
  4. 了解.xml配置:(图片来源网络)
  5. 了解配置中.xml与注解的对应关系:加入容器<bean>等于@Controller...;依赖注入(属性注入)<property name value>(手动装配)<autwire=byName>(自动装配)等于@Autowired(自动装配);
  6. --------------依赖注入----------
  7. 概念:依赖注入也叫bean的属性由容器注入,简称属性注入。
  8. 注解方式@Autowired:要开启注解支持,在.xml中写:
  9. @Autowired:先根据类型,再根据名字,若没有或不唯一就报错。可以和required=false搭配可以不存在
  10. @Resource:先根据名字,再根据类型,若没有或不唯一就报错

---------------掌握了上述IOC的.xml的开发(基石),现在可以了解如何用IOC注解开发----------------

前言:xml与注解比较:xml适用任何场景,维护简单方便;注解维护相对复杂。应该根据项目来综合使用:xml用来管理bean,注解只用来完成属性注入。

  1. ----------------Spring注解开发----------
  2. 需要确保项目中有3样存在:1、上文在.xml开启context对注解的支持<context:annotation-config/>;和扫描注解位置<context:component-scan base-package="com.litao.controller"/>;2、在Maven中已经引入了SpringAOP依赖(建议引入Spring-webMVC依赖,已含AOP和web依赖)
  3. 注解和.xml的关系,进行替代:<bean>等于@Component、@Controller控制层、@Service业务层、@Repository持久层,功能一样,但不同名字区分不同MVC层级
  4. 但是我们从整体看,现在项目中有以下文件:(1).xml文件;(2)java代码和其注解。--------->能不能不要配置文件.xml(xml文件一般只用来Mybatis),全部使用java代码和注解实现(纯java形式在SpringBoot随处可见)。可以!Spring官方文档给出的解释:(原组件扫描<context:component-scan base-package="com.litao.controller"/>也被注解@ComponentScan(basePackages = "com.litao.controller")代替)
  5. 现在的启动IOCService流程:在Maven中引入SpringIOC依赖也相当是引入一种service服务,这service服务需要用配置类MyConfig(以前是配置文件.xml)进行配置,配置内容用注解来表示(以前.xml需要一行行代码表示配置内容,所以注解很大程度上等于了xml的配置内容),然后才能启动使用该服务。

-------------------------------SpringAOP切面开发是另外一个非常重要的板块-------------------------------

  1. ----------------SpringAOP面向切面----------OOP是面向对象编程
  2. 概念:众所周知,AOP原理是基于动态代理cglib的。为什么需要AOP面向切面?因为在实际开发中,修改原有的代码是大忌,很可能导致原有的程序出现未知错误(设计模式:开闭原则)。所以,需要在原来的基础上,进行横向开发。
  3. 同IOC一样,AOP也有启动流程,启动AOPService流程:在Maven中引入SpringAOP依赖AspectJ 也相当是引入一种service服务,这service服务需要用配置类MyConfig加上@EnableAspectJAutoProxy(或配置文件.xml则加上<aop:aspectj-autoproxy/>提供切面支持)进行配置,达到了配置内容用注解来表示,然后才能启动使用该服务,某类想启动用@Aspect。
  4. XML实现AOP:(图片来源网络)
  5. 注解实现AOP:

------------------------------------Spring声明式事务也是非常重要的板块-------------------------------

  1. Spring事务本质还是数据库innodb引擎对事务对事务的支持。只不过Spring用了声明式注解和xml方式来做事务。
  2. 事务传播行为:
  3. 事务隔离级别:五个,其中一个是默认,数据库是啥就是什么。其余四个与数据库一样。即读未提交,提交读,可重复读,序列化。
  4. 事务出现错误的情况:脏读(读到其它事务未提交的数据)、不可重复读(对select,两次读数据不一样)、幻读(对insert、delete,读的数据条目不一样)

------------------------------------Spring整合其它框架:Mybatis-Spring-----------------------------------------

  1. 以前的Mybatis官方文档(务必先了解“入门”):MyBatis中文网
  2. 现在的Mybatis-Spring官方文档(重要):mybatis-spring –
  3. Mybatis-Spring声明式事务:
  4. 后续持续更新...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值