【Java】关于Spring框架的总结 (一)

本文总结一些关于Spring框架的理解,注意点及基础操作。如果有不对的地方,欢迎批评和建议。大家一起努力吧!

Spring 框架简介

Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring 致力于 Java EE 应用的各种解决方案,而不是仅仅专注于某一层的方案,可以说, Spring 是企业应用开发的“一站式”选择,Spring 贯穿表现层、业务层、持久层。然而,Spring 并不想取代那些已有的框架,而是以高度的开发性与它们无缝整合。

Spring框架结构

Spring框架由大约20个功能模块组成。这些模块被分成六个部分,分别是 Core Container、Data Access/Integration、Web、AOP(Aspect Oriented Programming)、Instrumentation 及 Test。

  • Spring Core:是框架的最基础部分。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转 (IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
  • Spring Context:Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。
  • Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。
  • Spring JDBC:提供了 JDBC 的抽象层,简化了 JDBC 编码,同时使代码更健壮。
  • Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。
  • Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。
  • Spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。
  • Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。

Spring IoC

控制反转(Inversion of Control,IoC),也称为依赖注入(Dependency Injection,DI),是面向对象编程中的一种设计理念,用来降低程序代码之间的耦合度。控制反转模式(也称作依赖注入)的基本概念是:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器 (在 Spring 框架中是 IOC 容器) 负责将这些联系在一起。

IoC 实现思路

思路1     通过 JavaBean 的属性(例如 setter 方法)分配依赖性
思路2     依赖性以构造函数的形式提供,不以 JavaBean 属性的形式公开

IoC 实现步骤

1.下载Spring并添加到项目中。

Spring 的运行依赖于 commons-logging 组件,需要将相关的 jar 文件随 Spring 的 jar 文件一并导入。

2.创建持久化类、数据访问层接口及实现类和业务逻辑层接口及实现类。

这里的持久化类必须提供公有的 setter 方法,以便 Spring 调用。

3.编写 Spring 配置文件。

在项目的 classpath 根路径下创建 applicationContext.xml 文件。

在 Spring 配置文件中,使用<bean>元素来定义 Bean(也可称为组件)的实例。这个元素有两个常用属性:

id:表示定义的 Bean 实例的名称。

class:表示定义的 Bean 实例的类型。

在其作用域中使用子元素 <property> 为属性赋值。这个元素有两个常用属性:

name:表示该 Bean 实例属性的名称。

value:为该属性赋值。

4.编写代码通过Spring获取目标类的实例。

1)使用 BeanFactory 接口获取目标类实例

BeanFactory factory = new XMLBeanFactory(new FileInputSteam("mybean.xml"));
MyBean mybean = (MyBean) factory.getBean("mybean");

因为 org.springframework.beans.factory.BeanFactory 是一个简单接口,所以可以针对各种底层存储方法实现。最常用的 BeanFactory 定义是 XmlBeanFactory,它根据 XML 文件中的定义装入 bean。

在 XML 文件中定义的 Bean 是被消极加载的,这意味在需要 bean 之前,bean 本身不会被初始化。要从 BeanFactory 检索 bean,只需调用 getBean() 方法,传入将要检索的 bean 的名称即可。

每个 bean 的定义都可以是 POJO (用类名和 JavaBean 初始化属性定义) 或 FactoryBeanFactoryBean 接口为使用 Spring 框架构建的应用程序添加了一个间接的级别。

 2)使用 ApplicationContext 接口获取目标类实例

ApplicationContext 接口负责读取 Spring 配置文件,管理对象的加载,生成,维护 Bean 对象与 Bean 对象之间的依赖关系,负责 Bean 的生命周期等。ClassPathXmlApplicationContext 是 ApplicationContext 接口的实现类,用于从 classpath 路径中读取 Spring 配置文件。

Spring AOP

面向切面编程(Aspect Oriented Programming,AOP)是软件编程思想发展到一定阶段的产物,是对面向对象编程(Object Oriented Programming,OOP)的有益补充。AOP 的功能完全集成到了 Spring 事务管理、日志和其他各种特性的上下文中。面向切面编程,简单地来说就是在不改变原程序的基础上为代码段增加新的功能,对代码段进行增强处理。它的设计思想来源于代理设计模式。

基本概念

切面(Aspect):一个模块化的横切逻辑(或称横切关注点),可能会横切多个对象。

连接点(Join Point):程序执行中的某个具体的执行点。

增强处理(Advice):切面在某个特定连接点上执行的代码逻辑。

切入点(Pointcut):对连接点的特征进行描述,可以使用正则表达式。增强处理和一个切入点表达式相关联,并在与这个切入点匹配的某个连接点上运行。

目标对象(Target object):被一个或多个切面增强的对象。

AOP代理(AOP proxy):由AOP框架所创建的对象,实现执行增强处理方法等功能。

织入(Weaving):将增强处理连接到应用程序中的类型或对象上的过程。

AOP实现思路(这里使用简单的日志记录增强操作进行演示)

1.在项目中添加 Spring AOP 相关的 jar 文件。

2)创建增强类,编写前置增强和后置增强实现日志功能。

把需要增强的代码提取到增强类中。这里使用日志记录方法进行演示。

3)编写 Spring 配置文件,对业务方法进行增强处理。

在 <Bean> 元素中需要添加 aop 的名称空间,以导入与AOP相关的标签。

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
 4     xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
 5     xmlns:context="http://www.springframework.org/schema/context"
 6     xsi:schemaLocation="http://www.springframework.org/schema/beans
 7      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
 8      http://www.springframework.org/schema/tx
 9      http://www.springframework.org/schema/tx/spring-tx.xsd
10      http://www.springframework.org/schema/aop
11      http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
12      http://www.springframework.org/schema/context
13      http://www.springframework.org/schema/context/spring-context-3.0.xsd">
14 </beans>

下面是对增强的配置代码

与 AOP 相关的配置都放在 <aop:config> 元素中,如配置切入点的标签 <aop:pointcut>。

如图中配置所示,在 <aop:config> 中使用 <aop:aspect> 引用包含增强方法的Bean。分别通过 <aop:before> 和 <aop:after-returning> 将方法声明为前置增强和后置增强。

<aop:pointcut> 的 expression 属性可以配置切入点表达式。

上述配置为AOP配置代码片段,其中expression部分为定义切点的表达式部分,如下:

execution(* cn.zdpz.service..*.*(..))

表达式结构表示如下

标识符 含义
execution() 表达式的主体
第一个“*”符号 表示返回值的类型任意
cn.zdpz.service AOP 所切的服务的包名,即,需要进行横切的业务类
包名后面的“..” 表示当前包及子包
第二个“*” 表示类名,*即所有类
.*(..) 表示任何方法名,括号表示参数,两个点表示任何参数类型

官方文档关于表达式结构介绍

execution(<修饰符模式>?<返回类型模式><方法名模式>(<参数模式>)<异常模式>?)

4)编写代码,获取带有增强处理的业务对象。

原文地址:https://www.cnblogs.com/xiaotie666/p/LiujinSpringSummary.html

时间: 2024-10-17 12:31:32

【Java】关于Spring框架的总结 (一)的相关文章

java的Spring 框架概述

◆简介 意图:解决公司运用开发的复杂性 功用:运用根本的JavaBean替代EJB,并供给了更多的公司运用功用 规模:任何Java运用 Spring 结构是一个分层架构,由 7 个界说良好的模块构成号码归属地查询.Spring 模块构建在中心容器之上,中心容器界说了创建.装备和办理 bean 的办法. 构成 Spring 结构的每个模块(或组件)都能够独自存在关键词挖掘工具,或许与其他一个或多个模块联合完结.每个模块的功用如下: • 中心容器:中心容器供给 Spring 结构的根本功用.中心容器

java:Spring框架1(基本配置,简单基础代码实现)

1.基本配置: 步骤一:新建项目并添加spring依赖的jar文件和commons-logging.xx.jar: 步骤二:编写实体类,DAO及其实现类,Service及其实现类; 步骤三:在src下新建配置文件applicationContext.xml,并配置bean节点和property: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springfr

JAVA总结--Spring框架

一.Spring简介 Spring是一个开源框架,是一个分层架构: Spring目标是遵循一系列的接口标准,这样的好处是只需要简单的Java对象或者Javabean就能进行Java EE开发,这样开发的入门.测试.应用部署都得到了简化: Spring有7个核心模块,Core(核心容器).AOP(切面).DAO(事务支持).ORM(O\R MAPPING封装).Web(上下文.服务于Web请求等).Web MVC(MVC框架): Inversion of Control(控制反转).Depende

详解Java的Spring框架中的注解的用法

转载:http://www.jb51.net/article/75460.htm 1. 使用Spring注解来注入属性 1.1. 使用注解以前我们是怎样注入属性的 类的实现: class UserManagerImpl implements UserManager { private UserDao userDao; public void setUserDao(UserDao userDao) { this.userDao = userDao; } ... } 配置文件: <bean id=&qu

认识Java Spring 框架

谈起Java  开发总是离不开各种框架,当我们在使用Java初期就被各种框架的包围着,而.Net开发就比较简单了,从WinForm到Asp.Net再到APS.Net Mvc,一气呵成,开发起来那叫一个爽,但是也带来了一些问题,比如,.Net 开发者使用微软已经封装好的类库,程序员在日常的开发过程中,都不知道自己所使用的类库有多么精妙,但是Java就不一样了,它是完全开源的,可以按照自己的需求加载适合的类库,作为开发者就可以知道大牛们写的牛叉代码,也可以看到代码的重构的美妙之处.今天我们就来谈一谈

java数据库访问框架

数据库设计三大范式 http://www.cnblogs.com/linjiqin/archive/2012/04/01/2428695.html 数据库范式——通俗易懂[转] http://blog.sina.com.cn/s/blog_46d817650100yj2i.html浅谈SQL SERVER中事务的ACID http://www.cnblogs.com/CareySon/archive/2012/01/29/2331088.htmlJTA 深度历险 - 原理与实现 http://w

使用 Spring Boot 快速构建 Spring 框架应用--转

原文地址:https://www.ibm.com/developerworks/cn/java/j-lo-spring-boot/ Spring 框架对于很多 Java 开发人员来说都不陌生.自从 2002 年发布以来,Spring 框架已经成为企业应用开发领域非常流行的基础框架.有大量的企业应用基于 Spring 框架来开发.Spring 框架包含几十个不同的子项目,涵盖应用开发的不同方面.如此多的子项目和组件,一方面方便了开发人员的使用,另外一个方面也带来了使用方面的问题.每个子项目都有一定

spring框架内置笔记本

◆基本介绍 目的:解决企业应用开发的复杂性 特征:使用主JavaBean更换EJB,它提供了许多其他的企业应用 范围:随你Java应用 Spring 框架是一个分层架构.由 7 个定义良好的模块组成. Spring 模块构建在核心容器之上,核心容器定义了创建.配置和管理 bean 的方式. 组成 Spring 框架的每一个模块(或组件)都能够单独存在,或者与其它一个或多个模块联合实现.每一个模块的功能例如以下: ? 核心容器:核心容器提供 Spring 框架的基本功能.核心容器的主要组件是 Be

类比Spring框架来实现OC中的依赖注入

如果你之前使用过JavaEE开发中的Spring框架的话,那么你一定对依赖注入并不陌生.依赖注入(DI: Dependency Injection)是控制反转(IoC: Inversion of Control)的实现方式之一,另外一种是依赖查找(DL: Dependency Lookup).当然在Spring框架中主要使用到了控制反转中的依赖注入这种方式.当然在Spring框架中除了依赖注入外,还有一个重要的概念那就是面向切面编程(AOP). 简单的说,依赖注入负责往类中注入依赖对象,而面向切

spring框架搭建笔记

◆简介 目的:解决企业应用开发的复杂性 功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 范围:任何Java应用 Spring 框架是一个分层架构,由 7 个定义良好的模块组成.Spring 模块构建在核心容器之上,核心容器定义了创建.配置和管理 bean 的方式. 组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现.每个模块的功能如下: ? 核心容器:核心容器提供 Spring 框架的基本功能.核心容器的主要组件是 BeanFac