认识Spring框架
一、spring简化Java开发
为了降低Java开发的复杂性,spring框架采取了四种关键策略
(1)基于POJO的轻量级和最小侵入性编程
注:spring竭力避免因自身的API而弄乱你的应用代码。spring不会强迫你实现spring规范的接口或继承spring规范的类,相反,在基于spring构建的应用中,它的类通常没有任何痕迹表明你使用了spring。最坏的场景是,一个类或许会使用spring注解,但它依旧是POJO。
(2)通过依赖注入和面向接口实现松耦合
注:依赖注入(Dependency Injection,DI)通过DI,对象的依赖关系将由系统中负责协调各对象的第三方组件在创建对象的时候进行设定。对象无需自行创建或管理它们的依赖关系,依赖关系被自动注入到需要他们的对象中去。两种配置方式,一种是基于XML的配置,一种是基于Java的配置。
(3)基于切面和惯例进行声明式编程
注:面向切面(aspect-oriented programming AOP)AOP能够使诸如日志模块、安全模块、事物模块这些服务模块化,并以声明的方式将它们用到需要它们影响的组件中去。所造成的结果就是这些组件会具有更高的内聚性并且会更加关注自身的业务,完全不需要了解涉及系统服务所带来的复杂性。总之,AOP能确保POJO的简单性。
(4)通过切面和模板减少样板式代码
注:spring中封装了一些实现功能的Java API的实现,比如:spring中的JdbcTemplate就是对JDBC访问数据库的封装。
二、spring容器
容器是spring的核心。spring容器使用DI管理构成应用的组件,它会创建相互协作的组件之间的关联。spring容器并不是只有一个,spring自带了多个容器的实现,可以归纳为两种不同的类型:
(1)bean工厂
(由org.springframework.beans.factory.BeanFactory 接口定义)是最简单的容器,提供基本的DI支持。
(2)应用上下文
(由org.springframework.context.ApplicationContext 接口定义)基于BeanFactory构建,并提供应用框架级的服务。
注:spring提供了多种类型的应用上下文,比如:
1)AnnotationConfigApplicationContext:从一个或多个基于Java的配置类中加载spring应用上下文
-
AnnotationConfigWebApplicationContext:从一个或多个基于Java的配置类中加载spring web应用上下文
-
ClassPathXmlApplicationContext:从类路径下的一个或多个XML配置文件中加载上下文定义,把应用上下文的类资源当做是类资源
-
FileSystemXmlApplicationContext:从系统文件下的一个或多个XML配置文件中加载上下文定义
-
XMLWebApplicationContext:从web应用下的一个或多个XML配置文件中加载上下文定义
三、bean的生命周期
具体的文字说明: