第一章 认识Spring

1、Spring提供的IOC容器,是Spring大杀器之一。容器将对象之间的依赖关系交给Spring进行控制,采用配制的方式对依赖关系进行描述,由Ioc容器负责依赖类之间的创建、拼接、管理、获取工作

2、Spring提供的第二大杀器,就是对AOP面向切面编程的支持。

3、Spring Data让对数据的访问更加容易。

第二章 IOC

1、通过BeanFactory启动IOC容器的时候,并不会初始化配置文件中的Bean,初始化动作发生在第一个调用的时候。对于单例的Bean来说,BeanFactory会缓存该实例,第二次调用的时候直接从缓存中获取该bean。

2、ContextApplication在初始化应用上下文的时候就实例化所有的单例bean,因此启动时间会比BeanFactory长,但是没有第一次调用惩罚问题。

3、WebApplication是专门为Web而准备的,从WebApplication可以获得ServletContext的引用,ServletContext是web应用的上下文。WebApplication的初始化方式和上述两种Factory有所不同,因为需要ServletContext实例,所以必须在拥有web容器的前提下才能完成启动工作。

Spring提供了两种方式用于初始化WebApplicationContext,ServletContext监听器、自启动Servlet。其中只有Servlet2.3以上版本的Web容器才支持ServletContext监听器方式初始化WebApplicationContext。具体如何配置,带后文补充。。。。。

4、容器、配置信息、应用实现之间的关系,个人认为这张图很能说明问题

5、采用util命名空间配置集合类的bean;采用p命名空间简化配置

6、Bean的作用域

第五章Hibernate

1、Hibernate4建议使用与线程绑定的原声CurrentSession,不再使用HibernateTemplate。

2、延迟加载的问题。

Hibernate允许对关联属性、对象进行延迟加载,但是必须保证延迟加载的操作限于同一个额 Hibernate Session 范围之内。如果Service层返回一个启用了延迟加载功能的领域对象给Web层,当Web层访问到那些需要延迟加载的数据的时候,由于加载领域对象的Hibernate Session已经关闭,将导致延迟加载数据的访问异常。

Spring为此专门提供了一个OpenSessionViewFilter过滤器,主要供您能就是让每个请求过程绑定一个HibernateSession,即使最初的事务已经完成了,也可以在Web层进行延迟加载的操作。

OpenSessionViewFilter过滤器将Hibernate Session绑定到请求线程中,它将自动被Spring的事务管理器探测到。所以OpenSessionViewFilter适用于Service层使用HibernateTransactionManger或者JtaTransactionManger进行事务管理的环境,也可以用于非只读事务的数据操作中。

要启用这个过滤器,必须在web.xml中进行配置:

<filter>

<filter-name>openSessionInViewFilter</filter-name>

<filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>

<init-param> <param-name>singleSession</param-name>

<param-value>true</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>openSessionInViewFilter</filter-name>

<url-pattern>*.action</url-pattern>

</filter-mapping>

补充一下,Spring针对Hibernate的非JPA实现用的是OpenSessionInViewFilter,如果采用Spring Data JPA,使用的是OpenEntityManagerInViewFilter

第7章SpringMVC

1、controller中,如果希望方法入参也添加到模型中,只需要在相应的入参前面使用@ModeAttribute

2、Spring MVC在调用方法前会创建一个隐含的模型对象,作为模型数据的存储容器。如果处理方法的入参为Map或者Model类型(org.springframework.ui.Model,类似于Map,比Map更易用),SpringMVC会将隐含模型的应用传递给这些入参。于是开发者可以通过这个入参访问到模型中的所有数据,也可以向模型中添加新的属性数据。

3、Spring3.0有自己独立的校验框架,同时支持JSR303标准的校验框架,但是本身并不提供JSR303的实现,可以包含HibernateValidatorJSR303的实现jar,供Spirng使用。如下:

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.3.1.Final</version>
</dependency>

LoacalValidateorFactoryBean实现了Spirng的Validator接口,同时也实现了JSR303的Validator接口。只要在Spring容器中定义一个LocalValidatorFactoryBean即可。与此同时,Spring提供的标签<mvc:annotation-driven/>会默认装配好一个LocalValidatorFactoryBean,不用我们再单独声明bean。

4、校验结果的返回

srpingMVC会将实施校验的结果保存在被校验入参对象之后的BindingResult对象或者Errors对象中,同时这些校验结果也会保存在隐含模型中,可以在JSP页面中通过<form:errors path="*">或者<form:errors path="userName" cssClass="errorClass">来显示校验错误信息。

《Spring3.0就这么简单》的更多相关文章

  1. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  2. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  3. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  4. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  5. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

  10. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

随机推荐

  1. ios开发——实用技术篇OC篇&iOS的主要框架

    iOS的主要框架         阅读目录 Foundation框架为所有的应用程序提供基本系统服务 UIKit框架提供创建基于触摸用户界面的类 Core Data框架管着理应用程序数据模型 Core ...

  2. Python_爬虫2

    URLError异常处理 大家好,本节在这里主要说的是URLError还有HTTPError,以及对它们的一些处理. 1.URLError 首先解释下URLError可能产生的原因: 网络无连接,即本 ...

  3. IE7下position:relative的问题

    如果在IE7中使用position:relative属性,需要在该元素的容器上,同时给予position:relative属性.

  4. A beginner’s guide to Cache synchronization strategies--转载

    原文地址:http://vladmihalcea.com/2015/04/20/a-beginners-guide-to-cache-synchronization-strategies/ Intro ...

  5. Peter's Hobby

    Problem Description Recently, Peter likes to measure the humidity of leaves. He recorded a leaf humi ...

  6. javascript 制作的美化select,利用cookie保存选择

    可以看一下动画 下面是代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...

  7. SRM 584 第一次玩TopCoder。。。只水题一道。。。

    第一次topcoder,以前老感觉没有资格去做tc,cf什么的,现在已经慢慢接触了. 感觉还可以,还是有让我们这些蒻菜安慰的水题. tc的确很好玩,用客户端比赛,还有各种规则,而且还是只编写一个类提交 ...

  8. uva 784 Maze Exploration 染色 搜索水题 DFS

    染色问题,其实就是看看图上某一点能扩散多少. 用DFS解决,因为BFS不是很熟 =-=...以后要多练. 提交后32ms,优化了一下,在递归前进行判定,优化到22ms,不是优化的很好... 代码: # ...

  9. 魔方阵算法及C语言实现

    1 魔方阵概念 填充的,每一行.每一列.对角线之和均相等的方阵,阶数n = 3,4,5….魔方阵也称为幻方阵. 例如三阶魔方阵为: 魔方阵有什么的规律呢? 魔方阵分为奇幻方和偶幻方.而偶幻方又分为是4 ...

  10. markdownpad2 pro注册信息升级 破解版

    注册信息邮箱地址: Soar360@live.com 授权秘钥: GBPduHjWfJU1mZqcPM3BikjYKF6xKhlKIys3i1MU2eJHqWGImDHzWdD6xhMNLGVpbP2 ...