Spring简介

目录

1.1、简化Java开发

依赖注入

应用切面

1.2、容纳你的Bean

1.3、俯瞰Spring风景线

spring模块

Spring Portfolio


1.1、简化Java开发

依赖注入

创建应用组件之间协作的行为通常称为装配(wiring)。Spring有多种装配bean的方式,采用XML是很常见的一种装配方式。Spring还支持使用Java来描述配置。

Spring通过应用上下文(Application Context)装载bean的定义并把它们组装起来。Spring应用上下文全权负责对象的创建和组装。Spring自带了多种应用上下文的实现,它们之间主要的区别仅仅在于

如何加载配置。

应用切面

DI能够让相互协作的软件组件保持松散耦合,而面向切面编程(aspect-oriented-programming,AOP)允许你把遍布应用各处的功能分离出来形成可重用的组件。

面向切面编程往往被定义为促使软件系统实现关注点分离的一项技术。系统由许多不同的组件组成,每一个组件各负责一块特定功能。除了实现自身核心的功能之外,这些组件还经常承担着额外的职责。

诸如日志、事务管理和安全这样的系统服务经常融入到自身具有核心业务逻辑的组件中去,这些系统服务通常被称为横切关注点,因为它们会跨越系统的多个组件。

如果将这些关注点分散到多个组件中去,你的代码将会带来双重的复杂性。

实现系统关注点功能的代码将会重复出现在多个组件中。这意味着如果你要改变这些关注点的逻辑,必须修改各个模块中的相关实现。即使你把这些关注点抽象为一个独立的模块, 其他模块只是调用它的方法,但方法的调用还是会重复出现在各个模块中。

组件会因为那些与自身核心业务无关的代码而变得混乱。一个向地址簿增加地址条目的方法应该只关注如何添加地址,而不应该关注它是不是安全的或者是否需要支持事务。

 

 

 AOP能够使这些服务模块化,并以声明的方式将它们应用到它们需要影响的组件中去。所造成的结果就是这些组件会具有更高的内聚性并且会更加关注自身的业务,完全不需要了解设计系统服务所带来的

复杂性。总之AOP能够确保POJO的简单性。

1.2、容纳你的Bean

容器是Spring框架的核心。Spring容器使用DI管理构成应用的组件,它会创建相互协作的组件之间的关联。

 Spring容器并不是只有一个。Spring自带了多个容器实现,可以归为两种不同的类型。bean工厂是最简单的容器,提供基本的DI支持。应用上下文基于BeanFactory构建,并一共应用框架级别的服务,例如从

属性文件解析文本信息以及发布应用事件给感兴趣的事件监听者。

使用应用上下文

Spring自带了多种类型的应用上下文:

1、AnnotationConfigApplicationContext:从一个或多个基于Java的配置类中加载Spring上下文。

2、AnnotationConfigWebApplicationContext:从一个或多个基于Java的配置类中加载Spring Web应用上下文。

3、ClassPathXmlApplicationContext:从类路径下的一个或多个XML配置文件中加载上下文定义,把应用上下文的定义文件作为类资源。

4、FileSystemXmlApplicationContext:从文件系统下的一个或多个XML配置文件中加载上下文定义。

5、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(),将bean所在的应用上下文的引用传入进来

6、如果bean实现了BeanPostProcessor接口,Spring将调用它们的postProcessBeforeInitialization()方法

7、如果bean实现了InitializingBean接口,Spring将调用它们的afterPropertiesSet()方法。类似地,如果bean使用init-method声明了初始化方法,该方法也会被调用

8、如果bean实现了BeanPostProcessor接口,Spring将调用它们的postProcessAfterInitialization()方法

9、此时,bean已经准备就绪,可以被应用程序使用了,它们将一直驻留在应用上下文,直到该应用上下文被销毁

10、如果bean实现了DisposableBean接口,Spring将调用它的destroy()接口方法。同样,如果bean使用destroy-method声明了销毁方法,该方法也会被调用

1.3、俯瞰Spring风景线

spring模块

1、Spring核心容器

容器是Spring框架最核心的部分,它管理着Spring应用中bean的创建、配置和管理。在该模块中,包括了Spring bean工厂,它为Spring提供了DI的功能。基于Bean工厂,我们还会发现有多种Spring应用

上下文的实现,每一种都提供了配置Spring的不同方式。

除了bean工厂和应用上下文,该模块也提供了许多企业服务,例如E-mail、JNDI访问、EJB集成和调用。

2、Spring的AOP模块

在AOP模块中,Spring对面向切面编程提供了丰富的支持。这个模块是Spring应用系统中开发切面的基础。与DI一样,AOP可以帮助应用对象解耦。借助于AOP,可以将遍布系统的关注点(例如事务和安全)

从它们所应用的对象中解耦出来。

3、数据访问与集成

Spring没有尝试去创建自己的ORM解决方案,而是对许多流行的ORM框架进行了集成,包括Hibernate、Java Persisternce API、Java Data Object和iBATIS SQL Map。Spring的事务管理支持所有的ORM框架

以及JDBC。

4、Web与远程调用

MVC模式是一种普遍被接受的构建Web应用的方法。它可以帮助用户将界面逻辑和应用逻辑分离。

除了面向用户的Web应用,该模块还提供了多种构建与其他应用的交互的远程调用方案。Spring远程调用功能集成了RMI、Hessian、Burlap、JAX-WS,同时Spring还自带了一个远程调用框架:HTTP invoke。

Spring还提供了暴露和使用REST API的良好支持。

5、Instrumentation

Spring的Instrumentation模块提供了为JVM添加代理(agent)的功能。具体来讲,它为Tomcat提供了一个织入代理,能够为Tomcat传递类文件,就像这些文件是被类加载器加载的一样。

6、测试

Spring为JNDI、Servlet和Portlet编写单元测试提供了一系列的mock对象实现。对于集成测试,该模块为加载Spring应用上下文中的bean集合以及Spring上下文中的bean进行交互提供了支持。

Spring Portfolio

1、Spring Web Flow

Spring Web Flow建立于Spring MVC框架之上,它为基于流程的会话式Web应用(购物车或者向导功能)提供了支持。

2、Spring Web Service

Spring Web Service提供了契约优先的Web Service模型,服务的实现都是为了满足服务的契约而编写的。

3、Spring Security

利用Spring AOP,Spring Security为Spring应用提供了声明式的安全机制。

4、Spring Integration

许多企业级应用都需要与其他应用进行交互。Spring Integration提供了多种通用应用集成模式的Spring声明式风格实现。

5、Spring Batch

如果需要开发一个批处理应用,你可以通过Spring Batch,使用Spring强大的面向POJO的编程模型。

6、Spring Data

Spring Data使得在Spring中使用任何数据库都变得非常容易。

7、Spring Social

Spring的一个社交网络扩展模块,它能帮助你通过REST API链接Spring应用。

8、Spring Mobile

Spring Mobile是Spring MVC新的扩展模块,用于支持移动Web应用开发。

9、Spring for Android

为开发基于Android设备的本地应用提供某些简单的支持。

10、Spring Boot

Spring Boot大量依赖于自动配置技术,它能够消除大部分Spring配置。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值