spring总结

时间:2019-05-12 11:25:36下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《spring总结》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《spring总结》。

第一篇:spring总结

Spring 一:Spring流程

1.创建一个java项目

2.导入spring的支持包

3.写一个类作为被启动的类

4.书写spring的配置文件

5.启动spring容器

6.使用spring容器创建目标类对象

7.对象进行操作 二:springIOC

1.springIOC也叫作控制反转,就是让spring容器控制目标类的创建,初始化,销毁等操作。当spring是多例的时候并不能控制对象的销毁

创建bean的三种形式:

1.利用默认的构造器(必须有默认的构造函数)

2.利用静态构造方法(利用静态代码块)

3.利用实例工厂方法 只学习了两种:

创建bean的时机:

别名:alias

Spring的创建和销毁:

*初始化:

由spring容器调用init方法

在构造函数之后执行

*销毁:

单例时,由spring容器执行销毁操作,并且对象必须为ClassPathXmlApplicationContext的时候才可以,多例的情况下spring不能销毁他

三:springDI:依赖注入:给属性赋值

1.在spring中基本数据类型包括包装类和String类型

2.基本数据类型使用set方法赋值时依据的是setxxx的方法名,所以属性名和方法名要一致。

1.利用set方法给属性赋值

构造函数给属性赋值.xml

2.注解的匹配:

1、导入命名空间

xmlns:context=“http://www.xiexiebang.com.itcast.spring0909.scan”> 原理

*

* 启动spring容器,加载配置文件

*

* spring容器解析到

*

*

* spring容器会在指定的包及子包中查找类上是否有@Component *

* 如果@Component注解没有写任何属性

*

@Component *

public class Person{ *

*

} *

== *

*

如果@Component(“aa”)*

@Component *

public class Person{ *

*

} *

== *

*

* 在纳入spring管理的bean的范围内查找@Resource注解

*

* 执行@Resource注解的过程

* 说明:

*

xml效率比较高,但是书写比较麻烦 *

注解效率比较低,书写比较简单

继承:

四:代理

代理比较简单,所以先不写。

1.如何使用 Java 动态代理。具体有如下四步骤:

1.通过实现 InvocationHandler 接口创建自己的调用处理器;

2.通过为 Proxy 类指定 ClassLoader 对象和一组 interface 来创建动态代理类; 3.通过反射机制获得动态代理类的构造函数,其唯一参数类型是调用处理器接口类型;

4.通过构造函数创建动态代理类实例,构造时调用处理器对象作为参数被传入。

1.SpringAOP的各个概念:

1.切面:就是流程中需要执行的类

2.通知:切面中的方法

3.切入点:就是invoke方法中方法执行的条件

4.目标对象:被代理对象

5.aop对象:代理对象

6.织入:形成代理方法的过程

7.连接点:客户端调用的方法 代理对象的方法等于通知+目标方法。

1.Spring注解用的很少,了解就可以了。五:struts2深度解析:

六:spring和hibernate整合1.切入点表达式:

/表示文件夹,.表示包 七:三大框架整合 三大框架的整合步骤:

* 新建一个工程

* 把整个工程的编码改变成utf-8

* 把整个jsp页面也改变成utf-8

* 导包

web-inf

lib

struts

hibernate

spring

db

junit

* 建三个src folder

src

存放源代码的

cn.itcast.s2sh0909.struts2.action

cn.itcast.s2sh0909.dao

cn.itcast.s2sh0909.dao.impl

cn.itcast.s2sh0909.service

cn.itcast.s2sh0909.service.impl

cn.itcast.s2sh0909.domain

config

存放所有的配置文件

struts2

hibernate

spring

applicationContext.xml

applicationContext-db.xml

...........test

存放测试类

cn.itcast.s2sh0909.test

* 在dao和service层相应的包中写接口和类

* 在applicationContext-db.xml文件中写sessionFactory

* 在cn.itcast.s2sh0909.test包中新建一个类SessionFactoryTest,目的是为了测试SessionFactory

是否配置正确

* 写spring的声明式事务处理

* 在spring的配置文件中写dao和service

* 通过savePerson方法测试声明式事务处理

在Struts.xml中的action配置中,class应该写applicationContext.xml中配置Action类bean的id.

第二篇:Spring IOC原理总结

Spring IOC原理总结

Spring容器高层视图Spring 启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成一份相应的Bean配置注册表,然后根据这张注册表实例化Bean,装配好Bean之间的依赖关系,为上层应用提供准备就绪的运行环境。Bean缓存池:HashMap实现IOC容器介绍Spring 通过一个配置文件描述 Bean 及 Bean 之间的依赖关系,利用 Java 语言的反射功能实例化 Bean 并建立 Bean 之间的依赖关系。Spring 的 IoC 容器在完成这些底层工作的基础上,还提供了 Bean 实例缓存、生命周期管理、Bean 实例代理、事件发布、资源装载等高级服务。BeanFactory 是 Spring 框架的基础设施,面向 Spring 本身;ApplicationContext 面向使用 Spring 框架的开发者,几乎所有的应用场合我们都直接使用 ApplicationContext 而非底层的 BeanFactory。BeanFactoryBeanFactory体系架构:BeanDefinitionRegistry: Spring 配置文件中每一个节点元素在 Spring 容器里都通过一个 BeanDefinition 对象表示,它描述了 Bean 的配置信息。而 BeanDefinitionRegistry 接口提供了向容器手工注册 BeanDefinition 对象的方法。BeanFactory 接口位于类结构树的顶端,它最主要的方法就是 getBean(String beanName),该方法从容器中返回特定名称的 Bean,BeanFactory 的功能通过其他的接口得到不断扩展:ListableBeanFactory:该接口定义了访问容器中 Bean 基本信息的若干方法,如查看Bean 的个数、获取某一类型 Bean 的配置名、查看容器中是否包括某一 Bean 等方法;HierarchicalBeanFactory:父子级联 IoC 容器的接口,子容器可以通过接口方法访问父容器; 通过 HierarchicalBeanFactory 接口,Spring 的 IoC 容器可以建立父子层级关联的容器体系,子容器可以访问父容器中的 Bean,但父容器不能访问子容器的 Bean。Spring 使用父子容器实现了很多功能,比如在 Spring MVC 中,展现层 Bean 位于一个子容器中,而业务层和持久层的 Bean 位于父容器中。这样,展现层 Bean 就可以引用业务层和持久层的 Bean,而业务层和持久层的 Bean 则看不到展现层的 Bean。ConfigurableBeanFactory:是一个重要的接口,增强了 IoC 容器的可定制性,它定义了设置类装载器、属性编辑器、容器初始化后置处理器等方法;AutowireCapableBeanFactory:定义了将容器中的 Bean 按某种规则(如按名字匹配、按类型匹配等)进行自动装配的方法;SingletonBeanRegistry:定义了允许在运行期间向容器注册单实例 Bean 的方法;例子:使用 Spring 配置文件为 Car 提供配置信息:beans.xml:通过 BeanFactory 装载配置文件,启动 Spring IoC 容器:XmlBeanFactory 通过 Resource 装载 Spring 配置信息并启动 IoC 容器,然后就可以通过 BeanFactory#getBean(beanName)方法从 IoC 容器中获取 Bean 了。通过 BeanFactory 启动IoC 容器时,并不会初始化配置文件中定义的 Bean,初始化动作发生在第一个调用时。对于单实例(singleton)的 Bean 来说,BeanFactory会缓存 Bean 实例,所以第二次使用 getBean()获取 Bean 时将直接从 IoC 容器的缓存中获取 Bean 实例。Spring 在 DefaultSingletonBeanRegistry 类中提供了一个用于缓存单实例 Bean 的缓存器,它是一个用HashMap 实现的缓存器,单实例的 Bean 以 beanName 为键保存在这个HashMap 中。值得一提的是,在初始化 BeanFactory 时,必须为其提供一种日志框架,比如使用Log4J,即在类路径下提供 Log4J 配置文件,这样启动 Spring 容器才不会报错。ApplicationContextApplicationContext 由 BeanFactory 派生而来,提供了更多面向实际应用的功能。在BeanFactory 中,很多功能需要以编程的方式实现,而在 ApplicationContext 中则可以通过配置的方式实现。ApplicationContext 继承了 HierarchicalBeanFactory 和 ListableBeanFactory 接口,在此基础上,还通过多个其他的接口扩展了 BeanFactory 的功能:ClassPathXmlApplicationContext:默认从类路径加载配置文件FileSystemXmlApplicationContext:默认从文件系统中装载配置文件ApplicationEventPublisher:让容器拥有发布应用上下文事件的功能,包括容器启动事件、关闭事件等。实现了 ApplicationListener 事件监听接口的 Bean 可以接收到容器事件,并对事件进行响应处理。在 ApplicationContext 抽象实现类AbstractApplicationContext 中,我们可以发现存在一个 ApplicationEventMulticaster,它负责保存所有监听器,以便在容器产生上下文事件时通知这些事件监听者。MessageSource:为应用提供 i18n 国际化消息访问的功能;ResourcePatternResolver : 所 有 ApplicationContext 实现类都实现了类似于PathMatchingResourcePatternResolver 的功能,可以通过带前缀的 Ant 风格的资源文件路径装载 Spring 的配置文件。LifeCycle:该接口是 Spring 2.0 加入的,该接口提供了 start()和 stop()两个方法,主要用于控制异步处理过程。在具体使用时,该接口同时被 ApplicationContext 实现及具体 Bean 实现,ApplicationContext 会将 start/stop 的信息传递给容器中所有实现了该接口的 Bean,以达到管理和控制 JMX、任务调度等目的。ConfigurableApplicationContext 扩展于

ApplicationContext,它新增加了两个主要的方法: refresh()和 close(),让 ApplicationContext 具有启动、刷新和关闭应用上下文的能力。在应用上下文关闭的情况下调用 refresh()即可启动应用上下文,在已经启动的状态下,调用 refresh()则清除缓存并重新装载配置信息,而调用close()则可关闭应用上下文。这些接口方法为容器的控制管理带来了便利,但作为开发者,我们并不需要过多关心这些方法。使用:如果配置文件放置在类路径下,用户可以优先使用 ClassPathXmlApplicationContext 实现类:如果配置文件放置在文件系统的路径下,则可以优先考虑使用

FileSystemXmlApplicationContext 实现类:Spring 3.0 支持基于类注解的配置方式,主要功能来自于 Spring 的一个名为 JavaConfig 子项目,目前 JavaConfig已经升级为 Spring核心框架的一部分。ApplicationContext 在初始化应用上下文时就实例化所有单实例的 Bean。WebApplicationContextWebApplication体系架构:WebApplicationContext 是专门为 Web 应用准备的,它允许从相对于 Web 根目录的路径中装载配置文件完成初始化工作。从WebApplicationContext 中可以获得

ServletContext 的引用,整个 Web 应用上下文对象将作为属性放置到 ServletContext 中,以便 Web 应用环境可以访问 Spring 应用上下文。WebApplicationContext 定义了一个常量ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,在上下文启动时,WebApplicationContext 实例即以此为键放置在 ServletContext 的属性列表中,因此我们可以直接通过以下语句从 Web 容器中获取WebApplicationContext:Spring 和 Web 应用的上下文融合:WebApplicationContext 的初始化方式:WebApplicationContext 需要 ServletContext 实例,它必须在拥有 Web 容器的前提下才能完成启动的工作。可以在 web.xml 中配置自启动的 Servlet 或定义 Web 容器监听器(ServletContextListener),借助这两者中的任何一个就可以完成启动 Spring Web 应用上下文的工作。Spring 分别提供了用于启动 WebApplicationContext 的 Servlet 和 Web 容器监听器:org.springframework.web.context.ContextLoaderServlet;org.springframework.web.context.ContextLoaderListener由于 WebApplicationContext 需要使用日志功能,比如日志框架使用Log4J,用户可以将 Log4J 的配置文件放置到类路径 WEB-INF/classes 下,这时 Log4J 引擎即可顺利启动。如果 Log4J 配置文件放置在其他位置,用户还必须在 web.xml 指定 Log4J 配置文件位置。Bean的生命周期1.当调用者通过 getBean(beanName)向容器请求某一个 Bean 时,如果容器注册了org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor 接口,在实例化 Bean 之前,将调用接口的 postProcessBeforeInstantiation()方法;2.根据配置情况调用 Bean 构造函数或工厂方法实例化 Bean;3.如果容器注册了 InstantiationAwareBeanPostProcessor 接口,在实例化 Bean 之后,调用该接口的

postProcessAfterInstantiation()方法,可在这里对已经实例化的对象进行一些“梳妆打扮”;4.如果 Bean 配置了属性信息,容器在这一步着手将配置值设置到 Bean 对应的属性中,不过在设置每个属性之前将先调用InstantiationAwareBeanPostProcessor 接口的postProcessPropertyValues()方法;5.调用 Bean 的属性设置方法设置属性值;6.如果 Bean 实现了

org.springframework.beans.factory.BeanNameAware 接口,将调用setBeanName()接口方法,将配置文件中该 Bean 对应的名称设置到 Bean 中;7.如果 Bean 实现了 org.springframework.beans.factory.BeanFactoryAware 接口,将调用 setBeanFactory()接口方法,将 BeanFactory 容器实例设置到 Bean 中;8.如果 BeanFactory 装配了 org.springframework.beans.factory.config.BeanPostProcessor后处理器,将调用 BeanPostProcessor 的 Object postProcessBeforeInitialization(Object bean, String beanName)接口方法对 Bean 进行加工操作。其中入参 bean 是当前正在处理的 Bean,而 beanName 是当前 Bean 的配置名,返回的对象为加工处理后的 Bean。用户可以使用该方法对某些 Bean 进行特殊的处理,甚至改变 Bean 的行为,BeanPostProcessor 在 Spring 框架中占有重要的地位,为容器提供对 Bean 进行后续加工处理的切入点,Spring 容器所提供的各种“神奇功能”(如 AOP,动态代理等)都通过 BeanPostProcessor 实施;9.如果 Bean 实现了 InitializingBean 的接口,将调用接口的

afterPropertiesSet()方法;10.如果在通过 init-method 属性定义了初始化方法,将执行这个方法;11.BeanPostProcessor 后处理器定义了两个方法:其一是 postProcessBeforeInitialization()在第 8 步调用;其二是 Object postProcessAfterInitialization(Object bean, String beanName)方法,这个方法在此时调用,容器再次获得对 Bean 进行加工处理的机会;12.如果在中指定 Bean 的作用范围为 scope=“prototype”,将 Bean 返回给调用者,调用者负责 Bean 后续生命的管理,Spring 不再管理这个 Bean 的生命周期。如果作用范围设置为 scope=“singleton”,则将 Bean 放入到 Spring IoC 容器的缓存池中,并将 Bean引用返回给调用者,Spring 继续对这些 Bean 进行后续的生命管理;13.对于 scope=“singleton”的 Bean,当容器关闭时,将触发 Spring 对 Bean 的后续生命周期的管理工作,首先如果 Bean 实现了 DisposableBean 接口,则将调用接口的afterPropertiesSet()方法,可以在此编写释放资源、记录日志等操作;14.对于 scope=“singleton”的 Bean,如果通过的 destroy-method 属性指定了 Bean 的销毁方法,Spring 将执行 Bean 的这个方法,完成 Bean 资源的释放等操作。可以将这些方法大致划分为三类:Bean 自身的方法:如调用 Bean 构造函数实例化 Bean,调用 Setter 设置 Bean 的属性值以及通过的 init-method 和 destroy-method 所指定的方法;Bean 级生命周期接口方法:如 BeanNameAware、BeanFactoryAware、InitializingBean 和 DisposableBean,这些接口方法由 Bean 类直接实现;容器级生命周期接口方法:在上图中带“★” 的步骤是由 InstantiationAwareBean PostProcessor 和BeanPostProcessor 这两个接口实现,一般称它们的实现类为“ 后处理器”。后处理器接口一般不由 Bean 本身实现,它们独立于 Bean,实现类以容器附加装置的形式注册到 Spring 容器中并通过接口反射为 Spring 容器预先识别。当Spring 容器创建任何 Bean 的时候,这些后处理器都会发生作用,所以这些后处理器的影响是全局性的。当然,用户可以通过合理地编写后处理器,让其仅对感兴趣Bean 进行加工处理ApplicationContext 和 BeanFactory 另一个最大的不同之处在于:ApplicationContext会利用 Java 反射机制自动识别出配置文件中定义的 BeanPostProcessor、InstantiationAwareBeanPostProcessor 和

BeanFactoryPostProcessor,并自动将它们注册到应用上下文中;而后者需要在代码中通过手工调用

addBeanPostProcessor()方法进行注册。这也是为什么在应用开发时,我们普遍使用 ApplicationContext 而很少使用 BeanFactory 的原因之一IOC容器工作机制容器启动过程web环境下Spring容器、SpringMVC容器启动过程:首先,对于一个web应用,其部署在web容器中,web容器提供其一个全局的上下文环境,这个上下文就是ServletContext,其为后面的spring IoC容器提供宿主环境;其次,在web.xml中会提供有contextLoaderListener(或ContextLoaderServlet)。在web容器启动时,会触发容器初始化事件,此时contextLoaderListener会监听到这个事件,其contextInitialized方法会被调用,在这个方法中,spring会初始化一个启动上下文,这个上下文被称为根上下文,即WebApplicationContext,这是一个接口类,确切的说,其实际的实现类是XmlWebApplicationContext。这个就是spring的IoC容器,其对应的Bean定义的配置由web.xml中的context-param标签指定。在这个IoC容器初始化完毕后,spring容器以WebApplicationContext.ROOTWEBAPPLICATIONCONTEXTATTRIBUTE为属性Key,将其存储到ServletContext中,便于获取;再次,contextLoaderListener监听器初始化完毕后,开始初始化web.xml中配置的Servlet,这个servlet可以配置多个,以最常见的DispatcherServlet为例(Spring MVC),这个servlet实际上是一个标准的前端控制器,用以转发、匹配、处理每个servlet请求。DispatcherServlet上下文在初始化的时候会建立自己的IoC上下文容器,用以持有spring mvc相关的bean,这个servlet自己持有的上下文默认实现类也是XmlWebApplicationContext。在建立DispatcherServlet自己的IoC上下文时,会利用WebApplicationContext.ROOTWEBAPPLICATIONCONTEXTATTRIBUTE先从ServletContext中获取之前的根上下文(即WebApplicationContext)作为自己上下文的parent上下文(即第2步中初始化的XmlWebApplicationContext作为自己的父容器)。有了这个parent上下文之后,再初始化自己持有的上下文(这个DispatcherServlet初始化自己上下文的工作在其initStrategies方法中可以看到,大概的工作就是初始化处理器映射、视图解析等)。初始化完毕后,spring以与servlet的名字相关(此处不是简单的以servlet名为Key,而是通过一些转换)的属性为属性Key,也将其存到ServletContext中,以便后续使用。这样每个servlet就持有自己的上下文,即拥有自己独立的bean空间,同时各个servlet共享相同的bean,即根上下文定义的那些bean。Bean加载过程Spring的高明之处在于,它使用众多接口描绘出了所有装置的蓝图,构建好Spring的骨架,继而通过继承体系层层推演,不断丰富,最终让Spring成为有血有肉的完整的框架。所以查看Spring框架的源码时,有两条清晰可见的脉络:1)接口层描述了容器的重要组件及组件间的协作关系;2)继承体系逐步实现组件的各项功能。接口层清晰地勾勒出Spring框架的高层功能,框架脉络呼之欲出。有了接口层抽象的描述后,不但Spring自己可以提供具体的实现,任何第三方组织也可以提供不同实现,可以说Spring完善的接口层使框架的扩展性得到了很好的保证。纵向继承体系的逐步扩展,分步骤地实现框架的功能,这种实现方案保证了框架功能不会堆积在某些类的身上,造成过重的代码逻辑负载,框架的复杂度被完美地分解开了。Spring组件按其所承担的角色可以划分为两类:1)物料组件:Resource、BeanDefinition、PropertyEditor以及最终的Bean等,它们是加工流程中被加工、被消费的组件,就像流水线上被加工的物料;BeanDefinition:Spring通过BeanDefinition将配置文件中的配置信息转换为容器的内部表示,并将这些BeanDefinition注册到BeanDefinitionRegistry中。Spring容器的后续操作直接从BeanDefinitionRegistry中读取配置信息。2)加工设备组件:ResourceLoader、BeanDefinitionReader、BeanFactoryPostProcessor、InstantiationStrategy以及BeanWrapper等组件像是流水线上不同环节的加工设备,对物料组件进行加工处理。InstantiationStrategy:负责实例化Bean操作,相当于Java语言中new的功能,并不会参与Bean属性的配置工作。属性填充工作留待BeanWrapper完成BeanWrapper:继承了PropertyAccessor和PropertyEditorRegistry接口,BeanWrapperImpl内部封装了两类组件:(1)被封装的目标Bean(2)一套用于设置Bean属性的属性编辑器;具有三重身份:(1)Bean包裹器(2)属性访问器(3)属性编辑器注册表。PropertyAccessor:定义了各种访问Bean属性的方法。PropertyEditorRegistry:属性编辑器的注册表该图描述了Spring容器从加载配置文件到创建出一个完整Bean的作业流程:1、ResourceLoader从存储介质中加载Spring配置信息,并使用Resource表示这个配置文件的资源;2、BeanDefinitionReader读取Resource所指向的配置文件资源,然后解析配置文件。配置文件中每一个解析成一个BeanDefinition对象,并保存到BeanDefinitionRegistry中;3、容器扫描BeanDefinitionRegistry中的BeanDefinition,使用Java的反射机制自动识别出Bean工厂后处理后器(实现BeanFactoryPostProcessor接口)的Bean,然后调用这些Bean工厂后处理器对BeanDefinitionRegistry中的BeanDefinition进行加工处理。主要完成以下两项工作:1)对使用到占位符的元素标签进行解析,得到最终的配置值,这意味对一些半成品式的BeanDefinition对象进行加工处理并得到成品的BeanDefinition对象;2)对BeanDefinitionRegistry中的BeanDefinition进行扫描,通过Java反射机制找出所有属性编辑器的Bean(实现java.beans.PropertyEditor接口的Bean),并自动将它们注册到Spring容器的属性编辑器注册表中(PropertyEditorRegistry);4.Spring容器从BeanDefinitionRegistry中取出加工后的BeanDefinition,并调用InstantiationStrategy着手进行Bean实例化的工作;5.在实例化Bean时,Spring容器使用BeanWrapper对Bean进行封装,BeanWrapper提供了很多以Java反射机制操作Bean的方法,它将结合该Bean的BeanDefinition以及容器中属性编辑器,完成Bean属性的设置工作;6.利用容器中注册的Bean后处理器(实现BeanPostProcessor接口的Bean)对已经完成属性设置工作的Bean进行后续加工,直接装配出一个准备就绪的Bean。总结Spring IOC容器主要有继承体系底层的BeanFactory、高层的ApplicationContext和WebApplicationContextBean有自己的生命周期容器启动原理:Spring应用的IOC容器通过tomcat的Servlet或Listener监听启动加载;Spring MVC的容器由DispatchServlet作为入口加载;Spring容器是Spring MVC容器的父容器容器加载Bean原理:BeanDefinitionReader读取Resource所指向的配置文件资源,然后解析配置文件。配置文件中每一个解析成一个BeanDefinition对象,并保存到BeanDefinitionRegistry中;容器扫描BeanDefinitionRegistry中的BeanDefinition;调用InstantiationStrategy进行Bean实例化的工作;使用BeanWrapper完成Bean属性的设置工作;单例Bean缓存池:Spring 在 DefaultSingletonBeanRegistry 类中提供了一个用于缓存单实例 Bean 的缓存器,它是一个用 HashMap 实现的缓存器,单实例的 Bean 以 beanName 为键保存在这个HashMap 中。

1、具有1-5工作经验的,面对目前流行的技术不知从何下手,需要突破技术瓶颈的可以加群。

2、在公司待久了,过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的可以加群。

3、如果没有工作经验,但基础非常扎实,对java工作机制,常用设计思想,常用java开发框架掌握熟练的,可以加群。

4、觉得自己很牛B,一般需求都能搞定。但是所学的知识点没有系统化,很难在技术领域继续突破的可以加群。5.Java架构进阶群号:668395460

第三篇:Spring MVC使用总结

Org.springframework.ui.ModelMap传递数据供视图所用

${base}取的是当前页面所在的路径。它随页面的位置改变而改变。

web开发一共有四个作用域,范围从高到低分为appliaction作用域(全局作用域),session作用域,request作用域和page作用域。

${base}是el表达式语法,它会自动先从page作用域开始查找,如果没有再找request作用域,然后是session,最后再是application作用域。

动态网页项目,页面直接访问的是webcontent下的。

Weblogic.xml配置文件作用: weblogic.xml主要配置web容器的一些属性,比较JSP编译时间间隔、编译路径等 web.xml是配置整个应用工程的属性,如servlet等

你用tomcatjboss等web容器和weblogic一样,它们单独有自己的配置文件

视图解析器

SpringMVC用于处理视图最重要的两个接口是ViewResolver和View

FreeMarkerViewResolver是继承自springmvc的一个接口,只是和freemarker同名而已

XmlViewResolver

貌似工具库里面定义好了(如ftl、分词库),然后在common中用

<@s.m “error.errorMessage”/>什么意思??

视频

spring mvc

freemarker

金磊

今天问题

VECTOR-

脚本语言-

注解--

为什么frame要经过FrameAct.java一下,再返回??

@Controller是spring的Controller控制器?

为什么我新建的html是

别人是

<body>浏览器不支持Frames框架时显示的内容</body>

jar包

apache下的jar包

apache-ant-zip-1.8.0.jar(ant是什么??它的jar包??ant是脚本引擎,脚本语言有

JavaScript)

c3p0-0.9.1.2.jar

commons-codec-1.3.jar

commons-net-2.0.jar

commons-net-ftp-2.0.jar

dwr.jar

ehcache-1.6.2.jar

ganymed-ssh2-build251beta1.jar

htmlparser-1.6.jar

httpclient-4.0.3.jar

httpcore-4.1.jar

IKAnalyzer2012_u6.jar

jcaptcha-1.0.jar

jcl-over-slf4j-1.6.1.jar

jmagick.jar

json.jar

jta-1.1.jar

jug-2.0.0.jar

log4j-over-slf4j-1.6.1.jar

logback-classic-0.9.27.jar

logback-core-0.9.27.jar

lucene-core-3.0.3.jar

mailapi-1.4.2.jar

memcachedclient-2.0.1.jar

mysql-connector-5.1.8.jar

quartz-1.6.0.jar

slf4j-api-1.6.1.jar

smtp-1.4.2.jar

spymemcached-2.3.1.jar

----

spring mvc环境搭建:

1、web.xml,启动Dispatcher2、创建servlet3、创建controller.java(在spring mvc中,只要加了@controller就说明它是一个controller控制器了,非常简单)

其它注解

@RequestMapping(“/frame/config_main.do”)只要页面上访问这个路径,就会返回这

个注解下的方法的return的方法。

学习任何MVC都要掌握的步骤:

1、搭建环境(写hello world)

2、传值

3、截获值

4、分发值

5、源码

6、异常

7、上传下载

第四篇:Spring 事物机制总结

spring两种事物处理机制,一是声明式事物,二是编程式事物 声明式事物

1)Spring的声明式事务管理在底层是建立在AOP的基础之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。声明式事务最大的优点就是不需要通过编程的方式管理事务,这样就不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明(或通过等价的基于标注的方式),便可以将事务规则应用到业务逻辑中。因为事务管理本身就是一个典型的横切逻辑,正是AOP的用武之地。Spring开发团队也意识到了这一点,为声明式事务提供了简单而强大的支持。Spring强大的声明式事务管理功能,这主要得益于Spring依赖注入容器和Spring AOP的支持。依赖注入容器为声明式事务管理提供了基础设施,使得Bean对于Spring框架而言是可管理的;而Spring AOP则是声明式事务管理的直接实现者。和编程式事务相比,声明式事务唯一不足地方是,后者的最细粒度只能作用到方法级别,无法做到像编程式事务那样可以作用到代码块级别。但是即便有这样的需求,也存在很多变通的方法,比如,可以将需要进行事务管理的代码块独立为方法等等。2)5种配置方式

Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource、TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分。

DataSource、TransactionManager这两部分只是会根据数据访问方式有所变化,比如使用hibernate进行数据访问时,DataSource实际为SessionFactory,TransactionManager的实现为HibernateTransactionManager。关系图如下:

[html] view plain copy

1.

3.4.5.

6.7.

8.

9.10.

注意:sessionFactorty和transactionManager是下面5中配置方式的基本配置,第一种方式:每个Bean都有一个代理

[html] view plain copy

1.

2.

3.4.

5.6.

7.

8.9.

10.11.

12.13.

14.PROPAGATION_REQUIRED

15.

16.

17.

第二种方式:所有Bean共享一个代理基类

[html] view plain copy

1.

2.

3.4.

5.6.

7.PROPAGATION_REQUIRED

8. 9.

10.

11.12.

13.

14.15.

16.17.

18.19.

第三种方式:使用拦截器

[html] view plain copy

1.

2.3.

4.5.

6.PROPAGATION_REQUIRED

7.

8.

9.

10.11.

12.13.

14.*Dao

15.

16.

17.18.

19.transactionInterceptor

20.

21.

22.

23.24.

25.

26.27.

第四种方式:使用tx标签配置的拦截器

[html] view plain copy

1. 2.

3. 4.

5.

6.7.

8.

9.expression=“execution(* com.test.spring.dao.*.*(..))” />

10.

11.

第五种方式:全注解

[java] view plain copy

1.public class test { 2.@Transactional

3.public class UserDaoImpl extends HibernateDaoSupport implements UserDao { 4.5.public List listUsers(){ 6.return null

7.} 8.} 9.}

编程式事务

Spring的编程式事务即在代码中使用编程的方式进行事务处理,可以做到比声明式事务更细粒度。有两种方式一是使用TransactionManager,另外就是TransactionTemplate。1)TransactionManager使用方式

[java] view plain copy

1.public class UserDaoImpl extends HibernateDaoSupport implements UserDao { 2.private HibernateTransactionManager transactionManager;3.private DefaultTransactionDefinition def;4.5.public HibernateTransactionManager getTransactionManager(){ 6.return transactionManager;7.} 8.9.public void setTransactionManager(HibernateTransactionManager transactionManager){

10.this.transactionManager = transactionManager;11.}

12.13.public void createTransactionDefinition(){

14.def = new DefaultTransactionDefinition();

15.def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);16.def.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED);17.}

18.19.public void saveOrUpdate(User user){

20.TransactionStatus status = transactionManager.getTransaction(def);21.try {

22.this.getHibernateTemplate().saveOrUpdate(user);23.} catch(DataAccessException ex){ 24.transactionManager.rollback(status);25.throw ex;

26.}

27.transactionManager.commit(status);28.} 29.}

2)TransactionTemplate方式

[java] view plain copy

1.ResultDto ret = null;

2.ret =(ResultDto)this.transactionTemplate.execute(new TransactionCallback(){ 3.@Override

4.public Object doInTransaction(TransactionStatus status){ 5.ResultDto ret = null;

6.try {

7.drillTaskDao.deleteByKey(taskid);

8.} catch(Exception e){

9.logger.error(“delDrillTask:” + e.getMessage(), e);

10.ret = ResultBuilder.buildResult(ResultBuilder.FAIL_CODE, null, ErrorCode.COM_DBDELETEERROR);11.return ret;12.}

13.finally {

14.status.setRollbackOnly();15.} 16.17.ret = cleartaskrelativedata(taskid, appid, true);18.return ret;19.} 20.});

21.return ret;

第五篇:spring教学大纲

Spring教学大纲

1.Spring简介:一站式框架 Spring能为我们带来什么? a)使层与层之间只依赖于接口

b)Spring的bean工厂为我们创建对象,不需要程序员自己new对象了(IOC:inverse of control控制反转,DI:depandency injection 依赖注入)c)可以管理事务

d)可以对其他框架进行管理(struts2,hibernate)e)也可以使用spring自带的springMVC框架 f)也可以使用spring的JDBC模板

2.Spring IOC(DI)常用的注入方式: 1.构造器注入

2.setter注入(set方法注入)(常用)注意:setter方法注入,必须提供无参构造方法 3.Spring Bean的范围 常用的范围:

Singleton:单例模式,建议不要存在具有状态的成员变量,该项为默认项

Prototype:只要使用该对象,那就创建一个新的 注意:spring在与struts2整合时,需要将产生action的bean,配置为scope=”prototype” 4.Spring自动装配 a)byName 要求:bean id必须与包含此类成员的类的成员变量名相同

b)byType 根据类型查找,将查找到的对象注入到成员变量中

5.使用spring自带的JDBC模板

6.事务管理

7.Spring管理hibernate 8.spring整合struts2 步骤:

1.在项目中要引入struts2-spring-plugin-x-x-x.jar文件,该文件的位置:struts2的lib目录下

2.在struts.xml中配置:,说明使用spring的对象工厂产生action对象 3.在web.xml中要设置spring的监听,来查找spring文件的位置

org.springframework.web.context.ContextLoaderListener

contextConfigLocation

classpath*:applicationContext-beans.xml

注意:在spring中生成action对象时,最好配置scope=”prototype”

9.Ssh整合开发

下载spring总结word格式文档
下载spring总结.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    spring教学设计稿

    Spring 教学目标: 1. 能听、说、认读描述春天的词句。如:The grass is green.等。 2. 能用Let’s …. We can…. The … is/are….等句子在具体的情境中运用。 3. 感受英语诗......

    spring英语作文[5篇模版]

    spring英语作文4篇在日复一日的'学习、工作或生活中,大家都写过作文吧,作文是一种言语活动,具有高度的综合性和创造性。那么问题来了,到底应如何写一篇优秀的作文呢?以下是小编为......

    英语诗歌:Spring(春天)

    英语诗歌:Spring(春天) Sound the Flute! Now it's mute. Birds delight Day and Night. Nightingale In the dale, Lark in Sky Merrily Merrily Merrily to welcome in t......

    幼儿园大班英语教案《spring is coming》(大全)

    大班英语教案《spring is coming》适用于大班的英语主题教学活动当中,让幼儿复习颜色green/red/yellow/white,在游戏中复习短语:springiscoming;I'mwind/spring/tree/flower/bi......

    幼儿园大班英语教案《spring is coming》(合集)

    大班英语教案《spring is coming》适用于大班的英语主题教学活动当中,让幼儿复习颜色green/red/yellow/white,在游戏中复习短语:springiscoming;I'mwind/spring/tree/flower/bi......

    Lesson 36 Spring in China教案

    Lesson 36 Spring in China教学设计 彬县紫薇中学 顷文娟 Teaching Aims: 1. Master the new words and sentences. 2. Can read and understand the text correctly. 3. Ca......

    A spring outing春游英语作文

    A spring outing Spring came with all its glories.The new grass exposed its green , the pretty flowers opened their blossoms. It was Sunday ,the 23th of April.......

    Spring Festival(英文版春节介绍)(定稿)

    Spring Festival 1. Tale of Nian We call the Spring Festival Nian, but did you know that Nian was once the name of a terrible, scary monster? A long time ago, th......