Spring实战3-Spring之旅
2015-06-07 11:34
357 查看
Spring的目的是降低java开发的复杂性,具体采用四中策略:
基于POJO的轻量级和最小侵入性编程
通过依赖注入和面向接口实现松耦合
基于切面和惯例进行声明式编程
通过切面和模板减少样板式代码
创建应用组件之间协作的行为通常称为装配。用XML配置或者声明配置。
Spring通过应用上下文装载Bean的定义并把它们组装起来,该上下文全权负责对象的创建和组装。
依赖注入让相互写作的软件组件保持松散耦合,而AOP编程允许你把遍布应用各处的功能分离出来形成可重用的组件。如日志、事务管理和安全此类的系统服务。这些服务经常融入到有自身核心业务逻辑的组件中去,故它们通常称为横切关注点,因为它们总是跨越系统的多个组件。AOP可以使这些服务模块化,并以声明的方式将它们应用到它们需要影响的组件中去。结果是这些组件具有更高内聚性以及更加关注自身业务,完全不需要了解更能涉及的系统服务的复杂性。
Spring容器创建对象,装配它们,管理它们的整个生命周期,从创建到销毁。容器时Spring框架的核心,Spring容器使用依赖注入管理构成应用的组件,它会创建相互协作的组件之间的关联。
Spring自带了几种容器实现,可以归为两种不同的类型:1)Bean工厂(BeanFactory接口定义)是最简单的容器,提供基本的DI支持。2)应用上下文(ApplicationContext接口定义)基于BeanFactory之上构建,并提供面向应用的服务。
Spring常用的应用上下文
ClassPathXmlApplicationContext-从类路径下的XML配置文件中加载上下文定义,把应用上下文定义文件当做资源。
FileSystemXmlApplicationContext-读取文件系统下的XML配置文件并加载上下文定义。
XmlWebApplicationContext-读取Web应用下的XML配置文件并加载上下文定义
Bean的生命周期
Spring对Bean进行实例化
Spring将值和Bean的引用注入进Bean对应的属性中。
如果Bean实现了BeanNameAware接口,Spring将Bean的ID传递给SetBeanName()接口方法。
如果Bean实现了BeanFactoryAware接口,Spring将调用setBeanFactory()方法,将BeanFactory容器实例传入。
如果Bean实现了ApplicationContextAware接口,Spring将调用setApplicationContext()方法,将应用上下文的引用传入。
如果Bean实现了BeanPostProcessor接口,Spring将调用它们的postProcessBeforeInitialization()接口方法。
如果Bean实现了InitializingBean接口,Spring将调用它们的afterPropertiesSet()接口方法。类似地,如果Bean使用init-method声明了初始化方法,该方法也会被调用。
如果Bean实现了BeanPostProcessor接口,Spring将调用它们的postProcessAfterInitialization()方法。
此时,Bean已经准备就绪,可以被应用程序使用了。它们将一直驻留在应用上下文中,直到该应用上下文被销毁。
如果Bean实现了DisposableBean接口,Spring将调用它们的destroy()接口方法。同样,如果Bean使用了destroy-method声明了销毁方法,该方法也会被调用。
Spring架构图--摘自Spring 4
基于POJO的轻量级和最小侵入性编程
通过依赖注入和面向接口实现松耦合
基于切面和惯例进行声明式编程
通过切面和模板减少样板式代码
创建应用组件之间协作的行为通常称为装配。用XML配置或者声明配置。
Spring通过应用上下文装载Bean的定义并把它们组装起来,该上下文全权负责对象的创建和组装。
依赖注入让相互写作的软件组件保持松散耦合,而AOP编程允许你把遍布应用各处的功能分离出来形成可重用的组件。如日志、事务管理和安全此类的系统服务。这些服务经常融入到有自身核心业务逻辑的组件中去,故它们通常称为横切关注点,因为它们总是跨越系统的多个组件。AOP可以使这些服务模块化,并以声明的方式将它们应用到它们需要影响的组件中去。结果是这些组件具有更高内聚性以及更加关注自身业务,完全不需要了解更能涉及的系统服务的复杂性。
Spring容器创建对象,装配它们,管理它们的整个生命周期,从创建到销毁。容器时Spring框架的核心,Spring容器使用依赖注入管理构成应用的组件,它会创建相互协作的组件之间的关联。
Spring自带了几种容器实现,可以归为两种不同的类型:1)Bean工厂(BeanFactory接口定义)是最简单的容器,提供基本的DI支持。2)应用上下文(ApplicationContext接口定义)基于BeanFactory之上构建,并提供面向应用的服务。
Spring常用的应用上下文
ClassPathXmlApplicationContext-从类路径下的XML配置文件中加载上下文定义,把应用上下文定义文件当做资源。
FileSystemXmlApplicationContext-读取文件系统下的XML配置文件并加载上下文定义。
XmlWebApplicationContext-读取Web应用下的XML配置文件并加载上下文定义
Bean的生命周期
Spring对Bean进行实例化
Spring将值和Bean的引用注入进Bean对应的属性中。
如果Bean实现了BeanNameAware接口,Spring将Bean的ID传递给SetBeanName()接口方法。
如果Bean实现了BeanFactoryAware接口,Spring将调用setBeanFactory()方法,将BeanFactory容器实例传入。
如果Bean实现了ApplicationContextAware接口,Spring将调用setApplicationContext()方法,将应用上下文的引用传入。
如果Bean实现了BeanPostProcessor接口,Spring将调用它们的postProcessBeforeInitialization()接口方法。
如果Bean实现了InitializingBean接口,Spring将调用它们的afterPropertiesSet()接口方法。类似地,如果Bean使用init-method声明了初始化方法,该方法也会被调用。
如果Bean实现了BeanPostProcessor接口,Spring将调用它们的postProcessAfterInitialization()方法。
此时,Bean已经准备就绪,可以被应用程序使用了。它们将一直驻留在应用上下文中,直到该应用上下文被销毁。
如果Bean实现了DisposableBean接口,Spring将调用它们的destroy()接口方法。同样,如果Bean使用了destroy-method声明了销毁方法,该方法也会被调用。
Spring架构图--摘自Spring 4
相关文章推荐
- Struts2+ExtJS+Ajax 登录操作例子
- 用struts2 完成一个简单的通讯录,实现增删改查,分页,文件上传(头像),表单验证(两种方法)
- 【j2ee spring】27、巴巴运动网-整合hibernate4+spring4(2)
- Java的反射机制
- 【j2ee spring】26、巴巴运动网-整合hibernate4(1)
- Java泛型的一些限制
- Java equals的一个坑
- javaweb生成验证码图片
- java中各种集合的用法和比较
- NetBeans java 编译时提示使用了未经检查或不安全的操作
- java 内部类整理学习
- eclipse在使用git
- maven 在eclipse 中配置下载源代码
- 使用JDBC进行数据访问【spring framwork】
- Eclipse在SVN安装步骤(两种)和使用方法
- 想要成为java高手的25个学习目标
- Acegi Security -- Spring下最优秀的安全系统(zhuan)
- Spring包下载地址
- SpringMVC访问静态资源的三种方式
- javabean总结