《spring实战》学习笔记:1.Spring简介

Spring的概念

Spring是一个分层的一站式轻量级开源框架,也是一个容器框架。

侵入式设计:引入了框架,对现有的类的结构有影响;即需要实现或继承某些特定类。如:Struts框架。

非侵入式设计:引入了框架,对现有的类结构没有影响。spring属于这一类。

Spring的目标:

可以解决对象创建以及对象之间依赖关系的一种框架,降低Java开发的复杂性。
为了降低Java开发的复杂性,Spring采取了以下4种关键策略:

  1. 基于POJO的轻量级和最小侵入性编程;
  2. 通过依赖注入和面向接口实现松耦合;
  3. 基于切面和惯例进行声明式编程;
  4. 通过切面和模板减少样板式代码。

Spring三大特性:

控制反转(IOC):Inversion on Control , 控制反转 IOC

                                   对象的创建交给外部spring容器完成,这个就做控制反转.

                                             实现原理:xml配置文件 + 反射机制 + bean工厂

依赖注入(DI):dependency injection

                                              处理对象的依赖关系,移除调用者对被调用者的依赖。实现松耦合。

        面向切面编程(AOP):

                                            利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。使用场景:日志、安全等。

        使用模版消除样板式代码

                                           使用Spring模版可以消除很多样板式代码,比如JDBC、JMS、JNDI、REST等。

Spring容器

在Spring中,应用对象生存于Spring容器中,Spring容器可以创建、装载、配置这些Bean,并且可以管理它们的生命周期。

Spring的容器实现

Bean工厂(org.springframework.beans.factory.BeanFactory):最简单的容器,提供基本的DI支持;
应用上下文(org.springframework.context.ApplicationContext):基于BeanFactory之上构建,提供面向应用的服务。

常用的几种应用上下文

ClassPathXmlApplicationContext:从类路径中的XML配置文件加载上下文,会在所有的类路径(包括jar文件)下查找;
FileSystemXmlApplicationContext:从文件系统中读取XML配置文件并加载上下文,在指定的文件系统路径下查找;
XmlWebApplicationContext:读取Web应用下的XML配置文件并加载上下文;

Bean的生命周期

  1. Spring对Bean进行实例化;
  2. Spring将值和Bean的引用注入进Bean对应的属性中;
  3. 如果Bean实现了BeanNameAware接口,Spring将Bean的ID传递给setBeanName()接口方法;
  4. 如果Bean实现了BeanFactoryAware接口,Spring将调setBeanFactory()接口方法,将BeanFactory容器实例传入;
  5. 如果Bean实现了ApplicationContextAware接口,Spring将调用setApplicationContext()接口方法,将应用上下文的引用传入;
  6. 如果Bean实现了BeanPostProcessor接口,Spring将调用postProcessBeforeInitialization()接口方法;
  7. 如果Bean实现了InitializationBean接口,Spring将调用afterPropertiesSet()方法。类似的如果Bean使用了init-method声明了初始化方法,该方法也会被调用;
  8. 如果Bean实现了BeanPostProcessor接口,Spring将调用ProcessAfterInitialization()方法;
  9. 此时此刻,Bean已经准备就绪,可以被应用程序使用了,它们将一直驻留在应用上下文中,直到该应用上下文被销毁;
  10. 如果Bean实现了DisposableBean接口,Spring将调用destory()方法,同样的,如果Bean中使用了destroy-method声明了销毁方法,也会调用该方法;


Spring模块简介


核心Spring容器

容器是Spring框架最核心的部分,它负责Spring应用中Bean的创建、配置和管理。Spring模块都构建与核心容器之上,当配置应用时,其实都隐式地使用了相关的核心容器类。另外,该模块还提供了许多企业级服务,如邮件、JNDI访问、EJB集成和调度等。

AOP

AOP是Spring应用系统开发切面的基础,与依赖注入一样,可以帮助应用对象解耦。借助于AOP,可以将遍布于应用的关注点(如事务和安全等)从所应用的对象中解耦出来。

数据访问与集成

Spring的JDBC和DAO模块封装了大量的样板代码,这样可以使得在数据库代码变得简洁,也可以更专注于我们的业务,还可以避免数据库资源释放失败而引发的问题。另外,Spring AOP为数据访问提供了事务管理服务。同时,Spring还与流程的ORM(Object-Relational Mapping)进行了集成,如Hibernate、MyBatis等。

Web和远程调用

Spring提供了两种Web层框架:面向传统Web应用的基于Servlet的框架和面向使用Java Portlet API的基于Portlet的应用。Spring远程调用服务集成了RMI、Hessian、Burlap、JAX-WS等。

测试

Spring提供了测试模块来测试Spring应用。
参考文档:《Spring实战》

猜你喜欢

转载自blog.csdn.net/qq_42283110/article/details/88073938