Sping in Action 4th Spring简介
Spring带来的优点:
简单、可测试、松耦合
轻量级、最小侵入性
依赖注入与接口使其松耦合
声明式编程、切面、基于约定
通过aspect和模板去除重复代码
严重耦合的例子
使用new关键字在一个类中创建另外一个类的实例。
耦合是必要的,因为耦合才能实现业务逻辑,但是过度耦合会导致侵入性强,测试难度大。
DI的工作原理
依赖注入容器自动注入POJO所需的依赖,无需POJO显式主动获取。
BraveKnight不关心quest的具体实现是什么,也不关心它是怎么embark的,只要注入进来的类实现了Quest接口。
依赖绑定1(xml)
以上都是通过构造器注入的,所以<constructor-arg ref/value />
依赖绑定2(Java)
使用xml绑定类的方法比较繁琐,目前比较流行的是java或者注解的形式,当然,由于历史原因,一些配置还必须使用xml。
ClassPathXmlApplicationContext读取xml绑定
在xml配置的依赖绑定,一般通过ClassPathXmlApplicationContext进行读取配置,其实就是生成了一个Container
Aop简介
日志,安全,事务等问题都是大家关注的问题,在整个逻辑的各个层面都会有所体现。
切面贯穿于业务逻辑的始终,随处可见的日志,随处可见的安全与事务。类似于活动插槽,想在哪里插入都可以。
Xml声明AOP组件
使用样板消除重复代码
使用Template消除重复代码,如JDBCTemplate消除JDBC连接释放等重复代码。
五种常用的Spring容器
FileSystemXmlApplicationContext
ClassPathXmlApplicationContext
AnnotationConfigApplicationContext
Spring家族