《Spring3.0就这么简单》
第一章 认识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就这么简单》的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- ios开发——实用技术篇OC篇&iOS的主要框架
iOS的主要框架 阅读目录 Foundation框架为所有的应用程序提供基本系统服务 UIKit框架提供创建基于触摸用户界面的类 Core Data框架管着理应用程序数据模型 Core ...
- Python_爬虫2
URLError异常处理 大家好,本节在这里主要说的是URLError还有HTTPError,以及对它们的一些处理. 1.URLError 首先解释下URLError可能产生的原因: 网络无连接,即本 ...
- IE7下position:relative的问题
如果在IE7中使用position:relative属性,需要在该元素的容器上,同时给予position:relative属性.
- A beginner’s guide to Cache synchronization strategies--转载
原文地址:http://vladmihalcea.com/2015/04/20/a-beginners-guide-to-cache-synchronization-strategies/ Intro ...
- Peter's Hobby
Problem Description Recently, Peter likes to measure the humidity of leaves. He recorded a leaf humi ...
- javascript 制作的美化select,利用cookie保存选择
可以看一下动画 下面是代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...
- SRM 584 第一次玩TopCoder。。。只水题一道。。。
第一次topcoder,以前老感觉没有资格去做tc,cf什么的,现在已经慢慢接触了. 感觉还可以,还是有让我们这些蒻菜安慰的水题. tc的确很好玩,用客户端比赛,还有各种规则,而且还是只编写一个类提交 ...
- uva 784 Maze Exploration 染色 搜索水题 DFS
染色问题,其实就是看看图上某一点能扩散多少. 用DFS解决,因为BFS不是很熟 =-=...以后要多练. 提交后32ms,优化了一下,在递归前进行判定,优化到22ms,不是优化的很好... 代码: # ...
- 魔方阵算法及C语言实现
1 魔方阵概念 填充的,每一行.每一列.对角线之和均相等的方阵,阶数n = 3,4,5….魔方阵也称为幻方阵. 例如三阶魔方阵为: 魔方阵有什么的规律呢? 魔方阵分为奇幻方和偶幻方.而偶幻方又分为是4 ...
- markdownpad2 pro注册信息升级 破解版
注册信息邮箱地址: Soar360@live.com 授权秘钥: GBPduHjWfJU1mZqcPM3BikjYKF6xKhlKIys3i1MU2eJHqWGImDHzWdD6xhMNLGVpbP2 ...