spring目标致力于全面的简化java开发,采取了4中关键策略,简单做一下介绍
基于POJO的轻量级和最小侵入性编程;
POJO全称是Plain Ordinary Java Object
Spring竭力避免因自身的API而弄乱你的应用代码。Spring不会强迫你 实现Spring规范的接口或继承Spring规范的类,相反,在基于Spring构 建的应用中,它的类通常没有任何痕迹表明你使用了Spring。最坏的 场景是,一个类或许会使用Spring注解,但它依旧是POJO。
通过依赖注入和面向接口实现松耦合;
如果一个对象只通过接口(而不是具体实现或初始化过 程)来表明依赖关系,那么这种依赖就能够在对象本身毫不知情的情 况下,用不同的具体实现进行替换。
基于切面和惯例进行声明式编程;
面向切面编程 (aspect-oriented programming,AOP)允许你把遍布应用各处的功能 分离出来形成可重用的组件。 面向切面编程往往被定义为促使软件系统实现关注点的分离一项技 术。系统由许多不同的组件组成,每一个组件各负责一块特定功能。 除了实现自身核心的功能之外,这些组件还经常承担着额外的职责。 诸如日志、事务管理和安全这样的系统服务经常融入到自身具有核心 业务逻辑的组件中去,这些系统服务通常被称为横切关注点,因为它们会跨越系统的多个组件。 如果将这些关注点分散到多个组件中去,你的代码将会带来双重的复杂性。
通过切面和模板减少样板式代码
Spring旨在通过模板封装来消除样板式代码
样板式代码的一个常见范例是使用JDBC访问数据库查询数据
装配Bean
Spring其实就是一个大型的工厂,而Spring容器中的Bean就是该工厂的产品.
在Spring中,对象无需自己查找或创建与其所关联的其他对象。相 反,容器负责把需要相互协作的对象引用赋予各个对象。
创建应用对象之间协作关系的行为通常称为装配(wiring),这也是 依赖注入(DI)的本质。
组件扫描(component scanning):Spring会自动发现应用上下文 中所创建的bean。 @Component @ComponentScan注解启用了组件扫描
自动装配(autowiring):Spring自动满足bean之间的依赖。 @Autowired实现自动装配