1.spring核心知识:
//spring是为了全方位简化java开发
关键策略
1.基于POJO(简单javabean包含计算但不可有connction)的轻量级和
最小侵入性编程
重量型框架强迫应用继承或实现框架接口导致应用与框架绑死。spring则不会,列入
hellowordbean如果在ejb就要继承sessionbean,最小侵入的代表其代买可在spring
应用和非spring应用上使用
2.通过依赖注入和面向接口实现松耦合(改变一个模块不影响其他模块或者小影响)
//生成时依赖和运行时依赖 同步时紧耦合 异步松耦合 对平台依赖性也区分紧耦合松耦合等
3.基于切面和惯例进行声明式编程(声明式 编程确定目标而非流程,简化编写难度 命名式每一步都非常清楚)
//声明式不需要指定步骤,非声明式却需要每步都需要指定
4.通过切面和模块减少板式代码
boilerplate code spring通过模板封装去除人工编写板式代码//使用切面将关注点或者其他公用的基础提炼出来,或者进行模板封装调用去除
依赖注入DI:
依赖注入
每个对象负责管理与自己协作的对象引用会导致高耦合
DI 对象依赖关系有系统中负责协调对象第三方组件创建对象时设定,无需自行创建
或管理,依赖关系自动注入(构造器注入也是依赖注入方式之一) //通过构造器或者setter用spring框架注入,利用接口当参数表明依赖关系
只通过接口表明依赖则可以用不同实体代替//value时参数//<constructor-arg value="#(T(System).out)"
装配有xml,java
不改变依赖类情况下修改依赖关系
Aop:
aop允许把遍布应用各处功能分离成可重用组件
尽量把每个模块提炼出来只关心其核心功能,不用多余的业务代码去让其本身臃肿,单独模块调用在方法中也比较麻烦
横切组件如果不分离出来则会重复出现或者作为独立模块重复出现调用方法。
组件会因为核心无关代码二混乱
aop用声明方式将组件应用到其影响组件中,可以有更高内聚性和去除多余代码带来
的复杂性
类似于用各种模覆盖在组件之上,用声明方式应用,不需要过多交集
声明为bean aop aspect 引用 aop内部声明切点 将方法前置通知或后置通知放入其中
切面也是一个bean 对bean的操作都可以适用其中 并没有额外区别,就是bean声明调用在方法前后