Spring---核心
作为一个JAVA程序员来说,现在是最好的时代,也是最坏的时代。好,指的是现在市场上有很多的新技术,对于追求新技术的爱好者来说,无疑是利好的资源;坏,指的是对于刚步入市场的小雏鸟来说,是比较容易淹没在技术的汪洋大海中的,为了追求日新月异的新技术而放弃了学习基础知识。在工作了一段时间以后,终于下定决心,重新学习Spring。
为了降低Java开发的复杂性,Spring采取了以下策略:
(1)基于POJO的轻量级和最小侵入性编程
(2)通过依赖注入和面向接口实现松耦合
(3)基于切面进行声明式编程
(4)通过切面和模板减少样板式代码
一、Java Bean
简单说,Java Bean就是一个普通的Java类 --- POJO。POJO之所以有强大的功能,是因为Spring通过DI(依赖注入,也被称为控制反转)来装配(创建组件之间的协作的行为称为装配)它们。在一个复杂的应用系统中,通常是由多个类组成的。传统的做法是每个对象负责管理与自己协作的对象的引用,这会导致高度耦合和难以测试的代码。Spring的核心之一---DI,就是为了解决这个问题而生的。在Spring中,各个对象的依赖关系有系统中负责协调各个对象的第三方组件在创建对象时进行设定,而不需要对象亲自去构建和维护它们的依赖关系。如图所示:
Spring有多种装配bean的方式,采用XML是很常见的一种装配方式。
上面讲到,Spring通过第三方组件将bean装载起来,这个第三方组件就是应用上下文(Application Context)。Spring的Application Context全权负责对象的创建和组装。Spring自带了多种应用上下文的实现,不同之处在于它们加载配置的方式不同。
spring 的两大核心是AOP(面向切面)和DI(依赖注入)。DI能够让相互协作的软件组件保持松散耦合,而面向切面编程(aspect-oriented programming,AOP)允许你把遍布应用各处的功能分离出来,形成可重用的组件。后续详细阐述AOP和DI
二、使用应用上下文
常用的应用上下文包括以下几种:
(1)AnnotationConfigApplicationContext:从一个或多个基于Java的配置类中加载Spring应用上下文;
(2)AnnotationConfigWebApplicationContext:从一个或多个基于Java的配置类中加载Spring Web应用上下文;
(3)ClassPathXmlApplicationContext:从类路径下的一个或多个XML配置文件中加载上下文定义,把应用上下文的定义文件作为类资源;
(4)FileSystemXmlapplicationcontext:从文件系统下的一个或多个XML配置文件中加载上下文定义;
(5)XmlWebApplicationContext:从Web应用下的一个或多个XML配置文件中加载上下文定义。
使用FileSystemXmlApplicationContext和使用ClassPathXmlApp-licationContext的区别在于:FileSystemXmlApplicationContext在指定的文件系统路径下查找knight.xml文件;而ClassPathXmlApplicationContext是在所有的类路径(包含JAR文件)下查找 *.xml文件,在应用上下文准备完毕之后,我们就可以调用上下文的getBean()方法,从Spring容器中获取bean。