《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开发——实用篇Swift篇&项目开发常用实用技术
项目开发常用实用技术 实现拨打电话 要实现打电话功能,最简单最直接的方式便是:直接跳到拨号界面 (注意:这个需要真机调试,模拟器无效果) UIApplication.sharedApplica ...
- iOS开发——总结篇&关键字介绍
关键字介绍 在做iOS开发中,系统的各个关键字处处都是,但是未必每一个关键字都是那么的明白,所以罗列出一些关键字供大家互相学习,有不完善之处请指正,谢谢 atomic atomic是Objc使用的一种 ...
- PHP概率算法(适用于抽奖、随机广告)
做网站类的有时会弄个活动什么的,来让用户参加,既吸引用户注册,又提高网站的用户活跃度.同时参加的用户会获得一定的奖品,有100%中奖的,也有按一定概率中奖的,大的比如中个ipad.iphone5,小的 ...
- LeetCode: Binary Tree Traversal
LeetCode: Binary Tree Traversal 题目:树的先序和后序. 后序地址:https://oj.leetcode.com/problems/binary-tree-postor ...
- struts开发经验汇总
笔者接触struts2之时,对于web开发甚至还没有概念,仅有的知识是如何利用HTML.CSS和简单的JS进行静态网页的编写.对于开发一个网站所必需的后台.数据库基本没有了解. 因此这篇博文,可以说不 ...
- PHP.5-DIV+CSS布局网站首页实例
DIV+CSS布局网站首页实例 网站页面布局 http://www.sj33.cn/digital/wyll/201501/42379.html[页头.页脚.侧边栏和内容区域] #避免各浏览器对CSS ...
- Asp.Net 之 调用分享接口
一.后台分享方式 腾讯QQ.腾讯空间.腾讯微博.新浪微博分享接口,如下: 注意:在网站对接前,请先申请注册好您的QQ登录appid.新浪登录Appkey.腾讯微博appkey. //腾讯QQ分享 ht ...
- jQuery扩展工具方法
共享学习Jquery源码的一些东西 jQuery.extend({ expando : 生成唯一JQ字符串(内部) noConflict() : 防止冲突 ---------------- ...
- Java之MS SQL数据库连接
一 1.首先,到微软官方下载jdbc驱动包 Microsoft JDBC Driver 4.0 for SQL Server 2.运行sqljdbc_4.0.2206.100_chs.exe,把文件 ...
- [转]Maintain File Upload Control on Postbacks
本文转自:http://www.ironspeed.com/articles/Maintain%20File%20Upload%20Control/Article.aspx Introduction ...