1.1:Spring是如何简化Java开发的?4种关键策略,spring任何事情都能追随到四条原则
①:基于POJO的轻量级和最小侵入性编程
Spring竭力避免因自身的API而弄乱你的应用代码。Spring不会强迫你实现Spring规范的接口或继承Spring规范的类,相反,在基于Spring构建的应用中,它的类通常没有任何痕迹表明你使用了Spring。最坏的场景是,一个类或许会使用Spring注解,但它依旧是POJO
②:通过依赖注入(DI)和面向接口实现松耦合;
类似与设计模式种的鸭子第三版代码
③:基于切面(AOP)和惯例进行声明式编程;
在整个系统内,关注点(例如日志和安全)的调用经常散布到各个模块中,而这些关注点并不是模块的核心业务
把切面想象为覆盖在很多组件之上的一个外壳。应用是由那些实现各自业务功能的模块组成的。借助AOP,可以使用各种功能层去包裹核心业务层。这些层以声明的方式灵活地应用到系统中,你的核心应用甚至根本不知道它们的存在。这是一个非常强大的理念,可以将安全、事务和日志关注点与核心业务逻辑相分离
④:通过切面和模板减少样板式代码
1.2:Spring容器
①:Spring容器负责创建对象,装配它们,配置它们并管理它们的整个生命周期
在Spring应用中,对象由Spring容器创建和装配,并存在容器之中
②:Spring容器实现: 两种不同的类型 bean工厂比较低能
1.bean工厂(由org.springframework. beans.factory.eanFactory接口定义)是最简单的容器,提供基本的DI支持
2.应用上下文(由org.springframework.context.ApplicationContext接口定义)基于BeanFactory构建,并提供应用框架级别的服务,例如从属性文件解析文本信息以及发布应用事件给感兴趣的事件监听者
③:几种应用上下文实现
AnnotationConfigApplicationContext:从一个或多个基于Java的配置类中加载Spring应用上下文。
AnnotationConfigWebApplicationContext:从一个或多个基于Java的配置类中加载Spring Web应用上下文。
ClassPathXmlApplicationContext:从类路径下的一个或多个XML配置文件中加载上下文定义,把应用上下文的定义文件作为类资源。
FileSystemXmlapplicationcontext:从文件系统下的一个或多个XML配置文件中加载上下文定义。
XmlWebApplicationContext:从Web应用下的一个或多个XML配置文件中加载上下文定义。
④:bean的生命周期
Bean在Spring容器中从创建到销毁经历了若干阶段,每一阶段都可以针对Spring如何管理bean进行个性化定制
bean工厂的若干步骤
1.Spring对bean进行实例化;
2.Spring将值和bean的引用注入到bean对应的属性中;
3.如果bean实现了BeanNameAware接口,Spring将bean的ID传递给setBean-Name()方法;
4.如果bean实现了BeanFactoryAware接口,Spring将调用setBeanFactory()方法,将BeanFactory容器实例传入;
5.如果bean实现了ApplicationContextAware接口,Spring将调用setApplicationContext()方法,将bean所在的应用上下文的引用传入进来;
6.如果bean实现了BeanPostProcessor接口,Spring将调用它们的post-ProcessBeforeInitialization()方法;
7.如果bean实现了InitializingBean接口,Spring将调用它们的after-PropertiesSet()方法。类似地,如果bean使用init-method声明了初始化方法,该方法也会被调用;
8.如果bean实现了BeanPostProcessor接口,Spring将调用它们的post-ProcessAfterInitialization()方法;
9.此时,bean已经准备就绪,可以被应用程序使用了,它们将一直驻留在应用上下文中,直到该应用上下文被销毁;
10.如果bean实现了DisposableBean接口,Spring将调用它的destroy()接口方法。同样,如果bean使用destroy-method声明了销毁方法,该方法也会被调用。
1.3:Spring的模块分类(6个模块分类 20几个模块)
①:Spring核心容器(管理着Spring应用中bean的创建、配置和管理)
Spring bean工厂,它为Spring提供了DI的功能。基于bean工厂,我们还会发现有多种Spring应用上下文的实现,每一种都提供了配置Spring的不同方式。
除了bean工厂和应用上下文,该模块也提供了许多企业服务,例如E-mail、JNDI访问、EJB集成和调度。所有的Spring模块都构建于核心容器之上。
②:Spring的AOP模块
③:数据访问与集成
④:Web与远程调用
设计创建 Web 应用程序的模式 : 模型(model)-视图(view)-控制器(controller)
模块自带了一个强大的MVC框架,有助于在Web层提升应用的松耦合水平
REST API
⑤:Instrumentation
⑥:测试
1.4:Spring Portfolio (构建于Spring框架之上的框架和类库)
①:Spring Web Flow:基于流程的会话式Web应用(可以想一下购物车或者向导功能)提供了支持
②:Spring Web Service
③:Spring Security(利用Spring AOP,Spring Security为Spring应用提供了声明式的安全机制)
④:Spring Integration(许多企业级应用都需要与其他应用进行交互。Spring Integration提供了
多种通用应用集成模式的Spring声明式风格实现)
⑤:Spring Batch
⑥:Spring Data
MongoDB,图数据库,如Neo4j,还是传统的关系型数据库,Spring Data都为持久化提供了一种简单的编程模型
⑦:Spring Social
⑧:Spring Mobile
⑨:Spring for Android
⑩:Spring Boot