理论,代码
Spring官网:https://spring.io/
框架好处之一:解耦;要对框架有深刻理解;应用专家 or 技术专家?
spring概述
spring开源框架致力于J2EE各层的解决方案
Java创建对象的方式:new;从工厂取一个对象(工厂模式的应用);反射(按需分配);
spring就是按需分配,当你需要的时候再给你,spring有一个bean容器,用于缓存Java对象
spring两大特性IOC、AOP之IOC(见son模块)
IOC(控制反转)
IOC是面向对象编程中的一种设计原则,即不手动创建对象,交给spring来管理整个对象的生命周期。控制反转最常见的方式是DI(依赖注入),这是spring框架的核心。
springIOC特性解决了对象创建的问题、依赖关系维护的问题。
ioc,Spring的这个bean工厂容器主要是利用反射技术按需分配缓存对象,管理对象,描述依赖,依赖注入。Spring的bean工厂容器的作用就是缓存对象。
依赖关系对象的赋值交给spring容器来完成。
定义一个bean,只用一种配置方式以注入容器 -> xml配置或注解,自己写的class一般使用注解。而注入第三方对象写xml的bean。
spring两大特性IOC、AOP之AOP(见son2模块)
AOP(面向切面编程)
AOP基于IOC,AOP是对OOP的补充,但和OOP不冲突,这使代码内聚性更高。
AOP可以使软件各层耦合度降低,AOP有特定应用场景,面向切面就是软件的分层。一个功能,方法执行顺序,即层次。
所以,什么是AOP?面向切面编程,软件层次,ui->db(这需要调用很多方法,有调用顺序),db->ui,这有很多层,这就是面向切面,
过滤器就是面向切面编程思想。
把非功能性代码(如登录过滤)提取出来...,插入功能代码执行前或后,每个页面都写相同的code ,每个页面都要登录才能访问,故提取,这就是AOP。
设想:IOC是缓存bean,AOP是缓存非功能性方法。都是反射。
AOP底层机制:动态代理,就是为目标类(目标功能)加上前/后置代码。即定制了目标类。
spring对dao的支持(见son2模块)
springJDBC,创建备份数据表,加一字段:删除时间,动态代理删除日志[后通知],
spring事务处理,有操作日志,有问题可以重执行日志,这是spring对事务管理的支持。
spring:事务传播的管理