标签:RoCE puts 调用 eve execution 插入 优势 order lock
本文总结一些关于Spring框架的理解,注意点及基础操作。如果有不对的地方,欢迎批评和建议。大家一起努力吧!
Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring 致力于 Java EE 应用的各种解决方案,而不是仅仅专注于某一层的方案,可以说, Spring 是企业应用开发的“一站式”选择,Spring 贯穿表现层、业务层、持久层。然而,Spring 并不想取代那些已有的框架,而是以高度的开发性与它们无缝整合。
Spring框架由大约20个功能模块组成。这些模块被分成六个部分,分别是 Core Container、Data Access/Integration、Web、AOP(Aspect Oriented Programming)、Instrumentation 及 Test。
BeanFactory
,它是工厂模式的实现。BeanFactory
使用控制反转 (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获取目标类的实例。
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 初始化属性定义) 或 FactoryBean
。FactoryBean
接口为使用 Spring 框架构建的应用程序添加了一个间接的级别。
ApplicationContext 接口负责读取 Spring 配置文件,管理对象的加载,生成,维护 Bean 对象与 Bean 对象之间的依赖关系,负责 Bean 的生命周期等。ClassPathXmlApplicationContext 是 ApplicationContext 接口的实现类,用于从 classpath 路径中读取 Spring 配置文件。
面向切面编程(Aspect Oriented Programming,AOP)是软件编程思想发展到一定阶段的产物,是对面向对象编程(Object Oriented Programming,OOP)的有益补充。AOP 的功能完全集成到了 Spring 事务管理、日志和其他各种特性的上下文中。面向切面编程,简单地来说就是在不改变原程序的基础上为代码段增加新的功能,对代码段进行增强处理。它的设计思想来源于代理设计模式。
基本概念
切面(Aspect):一个模块化的横切逻辑(或称横切关注点),可能会横切多个对象。
连接点(Join Point):程序执行中的某个具体的执行点。
增强处理(Advice):切面在某个特定连接点上执行的代码逻辑。
切入点(Pointcut):对连接点的特征进行描述,可以使用正则表达式。增强处理和一个切入点表达式相关联,并在与这个切入点匹配的某个连接点上运行。
目标对象(Target object):被一个或多个切面增强的对象。
AOP代理(AOP proxy):由AOP框架所创建的对象,实现执行增强处理方法等功能。
织入(Weaving):将增强处理连接到应用程序中的类型或对象上的过程。
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)编写代码,获取带有增强处理的业务对象。
标签:RoCE puts 调用 eve execution 插入 优势 order lock
原文地址:https://www.cnblogs.com/xiaotie666/p/LiujinSpringSummary.html