优点
1.降低组件之间的耦合度 ,便于日后系统维护。
2.可以整合第三方框架,提高开发效率,如日志,消息服务等。
理解
spring的本质是管理软件中的对象,即创建对象和维护对象之间的关系。
2大核心功能
IOC:
控制反转,把对象的依赖关系交给容器来管理。
ioc是一种思想,主要有依赖注入(DI)实现。
DI注入方式: setter注入 构造器注入
@autowired @qualifiler byType 支持setter注入,构造器注入
@resource 只支持setter注入 byName javaee注解
AOP:
面向切面编程
将共通逻辑和传统业务逻辑隔离,降低业务之间的耦合度。
相关概念:
切面 @aspect
切入点表达式 名称限定表达式excution 类型限定表达式within
通知类型 前置通知@before 后置通知@after 异常通知@afterthrowing 环绕通知=前置+后置@around
原理:
采用动态代理实现的。
动态代理类重写了原目标组件的业务方法,在重写方法中中调用切面功能和原目标组件功能。
方式:
1.实现接口,采用jdk代理。基于java的反射机制实现代理接口的匿名类
2.类,采用cglib代理,加载代理类的class文件,修改字节码生成子类代理