Ioc思想基于IOC容器完成,IOC容器底层就是对象工厂
spring提供ioc容器实现两种方式 (两种接口)
ApplicationContext 子类对象
ioc操作bean管理
ioc操作bean管理(FactoryBean)
1.spring有两种bean,一种是普通bean 一种是工厂bean FactoryBean
2.普通bean:在配置文件中定义bean类型就是返回类型
3.工厂bean:在配置文件定义bean类型可以和返回类型不一样
bean 作用域:
1.在spring里面设置创建bean实力是单实例或者多实例
bean 管理指的是两个操作
spring 针对bean 管理中创建对象提供注解
基于注解方式实现对象创建
1 引入依赖
2 开启组建扫描
3 创建类在类上面添加创建对象注解
常见注入属性注解:
@autowired 根据属性类型进行注入
@Qualifier 根据属性名称进行注入 必须搭配 @autowired 使用。
@Resource 可以根据类型注入 可以根据名称注入
@Value 注入普通类型属性
完全注解开发:
1 创建配置类 替代xml配置文件
AOP
面向切面编程, 利用aop可以对业务逻辑的各个部分进行隔离 从而使得业务逻辑个部分之间的耦合度降低提高程序的可重用性 同时提高开发效率
不改变原代码添加新的功能。即事aop
aop底层使用动态代理
两种情况
aop术语:
1 连接点:类里面哪些方法可以被增强,这些称为连接点
2 切入点:实际被增强的方法被称为切入点
3 通知:实际增强的部分就称为通知或者叫增强
通知有多种类型:
4 切面:是动作,把通知应用到切入点过程
aop操作:
1 spring一般是基于AspectJ实现aop操作
AspectJ不是spring的组成部分 是独立的aop框架 一般吧AspectJ跟spring框架一起使用操作aop
2 基于AspectJ实现aop操作
切入点表达式:
1 切入点表达式作用:知道哪个类里面的哪个方法进行增强
execution([权限修饰符][返回类型][类全路径][方法名称]([参数列表]))
举例:对co m.xx.dao.xx 里面的add方法进行增强
execution(* co m.xx.dao.xx.add(…))
2 对co m.xx.dao.xx 里面 所有的方法进行增强
execution(* co m.xx.dao.xx.(…))
3 对co m.xx.dao里面 所有的方法进行增强
execution( co m.xx.dao.xx.. (…))
进行通知的配置:
1 在spring配置文件中开启注解扫描
2 使用注解创建增强类跟被增强类的对象 +@Component
3 在增强类上添加@Aspect
4 在spring中配置文件中开启生成代理对象
5 在增强类里面在作为通知的方法上面添加通知类型的注解 使用切入点表达式配置
配置不同类型的通知:
@Before
@after
@afterReturning。返回值返回之后执行。返回通知
@afterThrowing 异常通知。有异常才会执行。没异常不会执行
@Around
相同切入点可以使用@Pointcut 抽取
多个增强类同时增强一个方法的时候可以设置增强的优先级
JDBCTemplate 略
事务:
事务四个特性ACID
事务 操作:
声明式事务有两种方式:
相关api:
提供一个接口 根据框架的不同提供不同的实现类
使用步骤:
事务传播行为:
当一个事务方法被另一个事务方法调用的时候这个事务方法如何运行:
ioslation:事务隔离级别:
设置隔离级别可以处理上面事务问题:
脏读。 不可重复读。 幻读。
读未提交 有。 有 有
读以提交 无 有 有
可重复读 无。 无。 有。 mysql默认这个级别
串行化 无 无 无
超时时间 timeout。 事务需要在一定的时间内提交 如果不提交则会滚。 默认值是-1设置以秒为单位进行计算
是否只读 readOnly。默认值为false。
回滚。rollbackFor 设置某些异常 会滚
不回滚。noRollbackFor