zoukankan      html  css  js  c++  java
  • 《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">来显示校验错误信息。

  • 相关阅读:
    融云会话界面导航上移-使用IQKeyboardManager
    App调用safar
    info.plist 安全登录
    could not find developer disk image
    easyExcel使用以及踩过的坑
    springBoot配置文件详解
    jvm面试题(纯手撸)
    面试题
    设计模式之观察者模式(Observer)
    设计模式之模板方法(TemplateMethod)
  • 原文地址:https://www.cnblogs.com/mingziday/p/4747404.html
Copyright © 2011-2022 走看看