为了降低Java开发的复杂性,Spring采取了以下4种关键策略:
基于POJO的轻量级和最小侵入性编程;
POJO(Plain Ordinary Java Object)是简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称。
通过依赖注入和面向接口实现松耦合;
耦合具有两面性(two-headed beast)。一方面,紧密耦合的代码难以测试、难以复用、难以 理解,并且典型地表现出“打地鼠”式的bug特性(修复一个bug,将会出现一个或者更多新的 bug)。另一方面,一定程度的耦合又是必须的——完全没有耦合的代码什么也做不了。为 了完成有实际意义的功能,不同的类必须以适当的方式进行交互。
通过DI,对象的依赖关系将由系统中负责协调各对象的第三方组件在创建对象的时候进行设 定。对象无需自行创建或管理它们的依赖关系
注入的方式
- 通过构造器注入,构造函数参数实现同一个接口。
创建应用组件之间协作的行为通常称为装配(wiring),Spring有多种装配bean的方式,采用 XML是很常见的一种装配方式。也可以用java的方式写装配。
通过应用上下文负责对象的组装和装载,ClassPathXmlApplicationContext加载knights.xml,并获得Knight对象的引用。
基于切面和惯例进行声明式编程 ;
借助AOP,可以使用各种功能层去包裹核心业务层。这些层以 声明的方式灵活地应用到系统中,你的核心应用甚至根本不知道它们的存在。
通过切面和模板减少样板式代码;
Spring旨在通过模板封装来消除样板式代码。Spring的JdbcTemplate使得执行数据库操作时, 避免传统的JDBC样板代码成为了可能。
使用应用上下文加载
AnnotationConfigApplicationContext:从一个或多个基于Java的配置类中加 载Spring应用上下文。 AnnotationConfigWebApplicationContext:从一个或多个基于Java的配置类中 加载Spring Web应用上下文。 ClassPathXmlApplicationContext:从类路径下的一个或多个XML配置文件中加
载上下文定义,把应用上下文的定义文件作为类资源。 FileSystemXmlapplicationcontext:从文件系统下的一个或多个XML配置文件 中加载上下文定义。 XmlWebApplicationContext:从Web应用下的一个或多个XML配置文件中加载上 下文定义。
bean的生命周期