个人理解
IOC:控制反转(DI依赖注入),将以前由我们自己手动创建对象的过程交给了Spring,Spring帮助我们生产对象、管理对象、管理对象和对象之间的依赖关系。降低了代码的耦合度,方便我们后期对项目做维护。
三种注入方式:
1.setter注入
2.构造器注入
3.属性注入(注解)
@Autowired:默认根据类型进行匹配
@Resource:首先根据名称进行匹配,再根据类型进行匹配
自动装配autowire属性
AOP:面向切面(方便)编程,可以为某一类对象 进行监督和控制,也就是在调用这类对象的具体方法的前后去调用你指定的功能模块,从而达到对一个模块扩充的功能。可以通过注解或者XML文档进行实现。
开发切面,切面里面写的功能模块,叫做通知。
前置通知@Before、后置通知@AfterReturning、最终通知@After、异常通知@AfterThrowing、环绕通知@Around
后置通知和最终通知的区别:
后置通知只有在方法正常执行后才会被调用,如果方法执行过程中报错,则不会执行后置通知,而是执行异常通知。
无论方法执行有没有报错,都会执行最终通知
AOP最重要的一个应用:Spring的事务管理器。
Spring的事务管理器就是一个切面,切面中的功能不再是计算时间、输出日志,而是管理事务。因为Spring的事务管理器要对一组数据库操作做事务控制。所以事务管理器需要切入到一个可以包含所有Dao操作的方法中,即Service方法。
Spring事务管理器的特点:所有的事务,要么同时提交,要么同时回滚。只要有一次失误失败,所有事务一起回滚。
JDBC事务的特点:每执行完一次数据库操作就提交一次事务。