spring实战4学习笔记(1)Spring概述
Spring 之旅:
1.简化Java开发
Sping使命:简化Java开发,为了降低Java开发的复杂性,Spring采取以下4种关键策略:
基于POJO的轻量级和最小侵入性编程
通过依赖注入和面向接口实现松耦合(在编码的时候依赖注入经常会使用,面向接口实现因为类结构的繁琐很少使用,框架中用得很多)
基于切面和惯例进行声明式编程
通过切面和模板减少样板式代码
几乎Spring所做的任何事情都可以追溯到上述的一条或多条策略。
依赖注入:
DI功能是如何实现的:任何一个有实际意义的应用都会由两个或者更多的类组成,这些类相互之间进行协助来完成特定的业务逻辑。按照传统的做法,每个对象负责管理与自己相互协作的对象的引用,这将会导致高度耦合和难以测试的代码。
通过DI,对象的依赖关系将由系统中负责协调各对象的第三方组件在创建对象的时候进行设定。对象无需自行创建或管理它们的依赖关系
创建应用组件之间协作的行为通常称为装配(wiring)。
Spring有多种装配bean的方式:(XML、基于Java的配置(适用于第三方类及其扩展的装配)、自动装配)
基于切面进行声明式编程:
面向切面编程允许你把遍布应用各处的功能分离出来形成可重用的组件
适用模板消除样板式代码:
比如JdbcTemplate
2.容纳你的Bean:
在基于Spring的应用中,你的应用对象生存于Spring容器。容器负责创建对象,装配它们,配置它们并管理它们的整个生命周期
spring自带了多个容器实现,可以归纳为两种不同的类型。bean工厂和应用上下文
bean的生命周期:
1.Spring对bean进行实例化
2.Spring将值和bean的引用注入到bean对应的属性中
3.如果bean实现了BeanNameAware接口,Spring将bean的ID传递给setBeanName()方法
4.如果实现了BeanFactoryAware接口,Spring将调用SetBeanFactory()方法,将BeanFactory容器实例传入
5.如果bean实现了ApplicationContextAware接口,Spring将调用setApplicationContext()方法,将bean所在的应用上下文的引用传入进来
6.如果实现了BeanPostProcessor接口,Spring将调用它们的postProcessBeforeInitialization()方法
7.如果bean实现了InitializingBean接口,Spring将调用它们的after-PropertiesSet()方法。类似地,如果bean使用initmethod声明了初始化方法,该方法也会被调用;
8.如果bean实现了BeanPostProcessor接口,Spring将调用它们的post-ProcessAfterInitialization()方法;
9.此时,bean已经准备就绪,可以被应用程序使用了,它们将一直驻留在应用上下文中,直到该应用上下文被销毁;
10.如果bean实现了DisposableBean接口,Spring将调用它的destroy()接口方法。同样,如果bean使用destroy-method声明了销毁方法,该方法也会被调用。
3.Spring风景线:
正如你所看到的,Spring框架关注于通过DI、AOP和消除样板式代码来简化企业级Java开发。即使这是Spring所做的全部事情,那Spring也值得一用。但是,Spring实际上的功能超乎你的想象
spring模块:
Spring核心容器:容器是Spring框架最核心的部分,它管理着Spring应用中bean的创建、配置和管理。在该模块中,包扣了Spring Bean工厂,它为Spring提供了DI功能。基于bean工厂,我们还会发现有多种Spring应用上下文文的实现,每一种都提供了配置Spring的不同的方式。所有的Spring模块都构建于核心容器之上。当你配置应用时,其实你隐式地使用了这些类
Spring的AOP模块:在AOP模块中,Spring对面向切面编程提供类丰富的支持
数据访问与集成:使用JDBC编写代码通常会导致大量的样板式代码。Spring的JDBC和DAO模块抽象了这些样板式代码,是我们的数据库代码变得简单明了,还可以避免因为关闭数据库资源失败而引发的问题。该模块在多种数据库服务的错误信息之上构建了一个语义丰富的异常层,以后我们再也不需要解释那些隐晦专有的SQL错误信息了!对于那些喜欢ORM工具而不愿意直接使用JDBC的开发者,Spring提供了ORM模块
Web与远程调用:
Spring Portfolio:
Spring Web Flow:建立于Spring MVC框架之上,它为基于流程的会话式Web应用提供了支持
Spring Web Service:虽然核心的Spring框架提供了将Spring bean以声明的方式发布为Web Service的功能,但是这些服务是基于一个具有争议性的架构(拙劣的契约后置模型)之上而构建的。这些服务的契约由bean的接口来决定。 Spring Web Service提供了契约优先的Web Service模型,服务的实现都是为了满足服务的契约而编写的。
Spring Security:安全对于许多应用都是一个非常关键的切面。利用Spring AOP,Spring Security为Spring应用提供了声明式的安全机制
等