Spring

基于 XML 的配置

Spring_第1张图片
Spring_第2张图片

Spring_第3张图片
BeanFactory 和 ApplicationContext 的区别
Spring_第4张图片
ApplicationContext 接口的实现类
Spring_第5张图片

bean 标签

Spring_第6张图片

bean 的作用范围和生命周期

Spring_第7张图片

实例化 Bean 的三种方式

第一种方式:使用默认无参构造函数
   <!--在默认情况下:
它会根据默认无参构造函数来创建类对象。如果 bean 中没有默认无参构造函数,将会创建失败。
    -->
 <bean id="accountService" class="com.itheima.service.impl.AccountServiceImpl"/>

Spring_第8张图片
Spring_第9张图片

spring 的依赖注入

  • 构造函数注入
    顾名思义,就是使用类中的构造函数,给成员变量赋值。注意,赋值的操作不是我们自己做的,而是通过配置的方式,让 spring 框架来为我们注入。
    Spring_第10张图片
    Spring_第11张图片
  • set 方法注入
    顾名思义,就是在类中提供需要注入成员的 set 方法。
    在这里插入图片描述
    Spring_第12张图片
  • 使用 p 名称空间注入数据(本质还是调用 set 方法)
    此种方式是通过在 xml 中导入 p 名称空间,使用 p:propertyName 来注入数据,它的本质仍然是调用类中的set 方法实现注入功能
    在这里插入图片描述
    Spring_第13张图片
  • 注入集合属性
    顾名思义,就是给类中的集合成员传值,它用的也是set方法注入的方式,只不过变量的数据类型都是集合。我们这里介绍注入数组,List,Set,Map,Properties。
    Spring_第14张图片
    Spring_第15张图片

Spring_第16张图片
Spring_第17张图片

基于注解的 IOC 配置

基于注解整合时,导入约束时需要多导入一个 context 名称空间下的约束。
< !-- 告知 spring 创建容器时要扫描的包 -->

常用注解

用于创建对象的
相当于:< bean id="" class="">
@Component
在这里插入图片描述

@Controller @Service @Repository
Spring_第18张图片

用于注入数据的
相当于:< property name="" ref=""> < property name="" value="">
@Autowired
在这里插入图片描述
@Qualifier
Spring_第19张图片
@Resource
在这里插入图片描述
@Value
Spring_第20张图片
用于改变作用范围的:
相当于:< bean id="" class="" scope="">
@Scope
Spring_第21张图片
和生命周期相关的:(了解)
相当于:< bean id="" class="" init-method="" destroy-method="" />
@PostConstruct
在这里插入图片描述
@PreDestroy
在这里插入图片描述
关于 Spring 注解和 XML 的选择问题
Spring_第22张图片
@Configuration
Spring_第23张图片
@ComponentScan
Spring_第24张图片
@Bean
在这里插入图片描述
@PropertySource
在这里插入图片描述
@Import
在这里插入图片描述


使用@RunWith 注解替换原有运行器
在这里插入图片描述
使用@ContextConfiguration 指定 spring 配置文件的位置
在这里插入图片描述
Spring_第25张图片

AOP 的相关概念

动态代理常用的有两种方式

基于接口的动态代理
提供者:JDK 官方的 Proxy 类。
要求:被代理类最少实现一个接口。
基于子类的动态代理
提供者:第三方的 CGLib,如果报 asmxxxx 异常,需要导入 asm.jar。
要求:被代理类不能用 final 修饰的类(最终类)。

使用 JDK 官方的 Proxy 类创建代理对象
Spring_第26张图片

使用 CGLib 的 Enhancer 类创建代理对象
Spring_第27张图片
Spring_第28张图片
在这里插入图片描述
在 spring 中,框架会根据目标类是否实现了接口来决定采用哪种动态代理的方式。

第一步:把通知类用 bean 标签配置起来
Spring_第29张图片

第二步:使用 aop:config 声明 aop 配置
在这里插入图片描述
在这里插入图片描述

第三步:使用 aop:aspect 配置切面
Spring_第30张图片

第四步:使用 aop:pointcut 配置切入点表达式

Spring_第31张图片
第五步:使用 aop:xxx 配置对应的通知类型
在这里插入图片描述
Spring_第32张图片
切入点表达式说明
Spring_第33张图片
Spring_第34张图片
环绕通知
Spring_第35张图片
Spring_第36张图片

基于注解的 AOP 配置

在通知类上使用@Aspect 注解声明为切面
在这里插入图片描述

在增强的方法上使用注解配置通知
Spring_第37张图片
Spring_第38张图片
在 spring 配置文件中开启 spring 对注解 AOP 的支持
在这里插入图片描述

环绕通知注解配置
Spring_第39张图片
切入点表达式注解
在这里插入图片描述
Spring_第40张图片
不使用 XML 的配置方式
Spring_第41张图片


Spring 中的事务控制

spring 的事务控制都是基于 AOP 的,它既可以使用编程的方式实现,也可以使用配置的方式实现。

PlatformTransactionManager
Spring_第42张图片
Spring_第43张图片
TransactionDefinition
Spring_第44张图片
事务的隔离级别
Spring_第45张图片
事务的传播行为
Spring_第46张图片
超时时间
在这里插入图片描述
是否是只读事务
在这里插入图片描述
TransactionStatus
Spring_第47张图片


第一步:配置事务管理器
在这里插入图片描述
在这里插入图片描述
第二步:配置事务的通知引用事务管理器
在这里插入图片描述
第三步:配置事务的属性
Spring_第48张图片
第四步:配置 AOP 切入点表达式
Spring_第49张图片
第五步:配置切入点表达式和事务通知的对应关系
在这里插入图片描述

基于注解的配置方式

在这里插入图片描述

第一步:配置事务管理器并注入数据源
Spring_第50张图片
第二步:在业务层使用@Transactional 注解
在这里插入图片描述
该注解的属性和 xml 中的属性含义一致。该注解可以出现在接口上,类上和方法上。
出现接口上,表示该接口的所有实现类都有事务支持。
出现在类上,表示类中所有方法有事务支持
出现在方法上,表示方法有事务支持。
以上三个位置的优先级:方法>类>接口

3 第三步:在配置文件中开启 spring 对注解事务的支持
在这里插入图片描述
不使用 xml 的配置方式
Spring_第51张图片

你可能感兴趣的:(SSM,spring,java,aop)