Bootstrap

框架基本知识总结 Day4

spring中bean的生命周期

1.调用Bean的无参构造器构造对象
2.调用Bean的setter方法注入赋值
3.调用Bean的init-method方法初始化
4.调用Bean方法执行要完成的业务逻辑
5.销毁Bean,实际上是把Bean放回到IOC容器中

IOC容器管理Bean的机制

IOC容器默认不是延迟加载,不使用任何一个Bean,对象依然会被创建
使用lazy-init标签可以实现延迟初始化(对于一些不常用的Bean)

开发中数据库相关

实际开发中,是没有删除业务的,sql语句不应出现delete的物理删除
删除通过update语句实现逻辑删除,所有的数据库表格都需要有这样的一些字段
update_time:更新时间,用到desc(降序)保证最新的数据放在前面
version:版本号,用来实现乐观锁,在高并发的修改操作中保证数据一致性
status:状态,0表示删除,1表示存在(select * from user where id =1 and status = 1)

AOP(面向切面编程)

在开发中主要来解决日志,事务,权限等功能
在不改变原有的业务代码基础上,通过一些额外功能代理所需的需求(登录时业务逻辑不改变,判断是否是会员)
AOP是对OOP(面向对象编程)的补充完善
传统方法是每次有新的业务,都要写在每个类上
AOP方案是程序自动加载统一的代码,是通过对Bean对象代理完成

通知(Advice):增强处理*

需要实现的功能,定义了在某个切入点执行的操作,根据切入点的不同分为四个类型

连接点(Join Point)

程序执行的特定一个点,spring允许通知的地方

切入点(PointCut)*

在连接点的基础上来定义切入点,定义了在何处使用通知(织入),需要通过指定的表达式来选择方法或者类的切入点

切面(Aspect)

通知与切入点的结合(干什么,何时干)

引入

动态地为目标对象添加新的方法或接口

目标(target)

通知的对象

织入(Weaing)

把切面应用到目标对象,代理对象的过程

AOP需要引入的依赖

<!--  AOP  -->
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.9.6</version>
    </dependency>

AOP的通知类型

1.前置通知:在目标方法执行之前
2.后置通知:在目标方法执行之后,无论目标方法是否抛出异常都会执行,类似finally
3.异常通知:在目标方法抛出异常下时,类似catch
4.返回通知:在目标方法正常返回值后,正常执行,如果方法抛出异常,执行异常通知,类似try
5.环绕通知:综上四种通知,try catch finally的结合,与上三种互斥使用

补充:

异常通知:参数为Throwbable类型,可以取到对应的异常信息
返回通知:参数为Object类型,可以取到对应的返回值对象
 


 使用注解配置AOP

@Aspect 标记当前类是一个切面
@Component 把当前类放到IOC容器
需要在application.xml中开启AOP的自动代理<aop:aspectj-autoproxy />

 

SSM整合

springMVC:Controller,接受前台的请求,给出响应
spring:连接数据库,IOC容器管理bean,AOP管理事务,润滑剂
Mybatis:持久层(Dao层),操作数据库


spring框架配置Bean的方式

1.如果不使用注解版,所有bean的配置都将在application.xml文件下配置
2.如果使用注解,首先必须在xml下配置注解扫描,并且仔细看好路径和类型是否匹配上