欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      spring總結(jié)

      時(shí)間:2019-05-12 11:25:36下載本文作者:會(huì)員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《spring總結(jié)》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《spring總結(jié)》。

      第一篇:spring總結(jié)

      Spring 一:Spring流程

      1.創(chuàng)建一個(gè)java項(xiàng)目

      2.導(dǎo)入spring的支持包

      3.寫一個(gè)類作為被啟動(dòng)的類

      4.書寫spring的配置文件

      5.啟動(dòng)spring容器

      6.使用spring容器創(chuàng)建目標(biāo)類對(duì)象

      7.對(duì)象進(jìn)行操作 二:springIOC

      1.springIOC也叫作控制反轉(zhuǎn),就是讓spring容器控制目標(biāo)類的創(chuàng)建,初始化,銷毀等操作。當(dāng)spring是多例的時(shí)候并不能控制對(duì)象的銷毀

      創(chuàng)建bean的三種形式:

      1.利用默認(rèn)的構(gòu)造器(必須有默認(rèn)的構(gòu)造函數(shù))

      2.利用靜態(tài)構(gòu)造方法(利用靜態(tài)代碼塊)

      3.利用實(shí)例工廠方法 只學(xué)習(xí)了兩種:

      創(chuàng)建bean的時(shí)機(jī):

      別名:alias

      Spring的創(chuàng)建和銷毀:

      *初始化:

      由spring容器調(diào)用init方法

      在構(gòu)造函數(shù)之后執(zhí)行

      *銷毀:

      單例時(shí),由spring容器執(zhí)行銷毀操作,并且對(duì)象必須為ClassPathXmlApplicationContext的時(shí)候才可以,多例的情況下spring不能銷毀他

      三:springDI:依賴注入:給屬性賦值

      1.在spring中基本數(shù)據(jù)類型包括包裝類和String類型

      2.基本數(shù)據(jù)類型使用set方法賦值時(shí)依據(jù)的是setxxx的方法名,所以屬性名和方法名要一致。

      1.利用set方法給屬性賦值

      構(gòu)造函數(shù)給屬性賦值.xml

      2.注解的匹配:

      1、導(dǎo)入命名空間

      xmlns:context=“http://www.004km.cn.itcast.spring0909.scan”> 原理

      *

      * 啟動(dòng)spring容器,加載配置文件

      *

      * spring容器解析到

      *

      *

      * spring容器會(huì)在指定的包及子包中查找類上是否有@Component *

      * 如果@Component注解沒有寫任何屬性

      *

      @Component *

      public class Person{ *

      *

      } *

      == *

      *

      如果@Component(“aa”)*

      @Component *

      public class Person{ *

      *

      } *

      == *

      *

      * 在納入spring管理的bean的范圍內(nèi)查找@Resource注解

      *

      * 執(zhí)行@Resource注解的過程

      * 說明:

      *

      xml效率比較高,但是書寫比較麻煩 *

      注解效率比較低,書寫比較簡單

      繼承:

      四:代理

      代理比較簡單,所以先不寫。

      1.如何使用 Java 動(dòng)態(tài)代理。具體有如下四步驟:

      1.通過實(shí)現(xiàn) InvocationHandler 接口創(chuàng)建自己的調(diào)用處理器;

      2.通過為 Proxy 類指定 ClassLoader 對(duì)象和一組 interface 來創(chuàng)建動(dòng)態(tài)代理類; 3.通過反射機(jī)制獲得動(dòng)態(tài)代理類的構(gòu)造函數(shù),其唯一參數(shù)類型是調(diào)用處理器接口類型;

      4.通過構(gòu)造函數(shù)創(chuàng)建動(dòng)態(tài)代理類實(shí)例,構(gòu)造時(shí)調(diào)用處理器對(duì)象作為參數(shù)被傳入。

      1.SpringAOP的各個(gè)概念:

      1.切面:就是流程中需要執(zhí)行的類

      2.通知:切面中的方法

      3.切入點(diǎn):就是invoke方法中方法執(zhí)行的條件

      4.目標(biāo)對(duì)象:被代理對(duì)象

      5.aop對(duì)象:代理對(duì)象

      6.織入:形成代理方法的過程

      7.連接點(diǎn):客戶端調(diào)用的方法 代理對(duì)象的方法等于通知+目標(biāo)方法。

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

      六:spring和hibernate整合1.切入點(diǎn)表達(dá)式:

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

      * 新建一個(gè)工程

      * 把整個(gè)工程的編碼改變成utf-8

      * 把整個(gè)jsp頁面也改變成utf-8

      * 導(dǎo)包

      web-inf

      lib

      struts

      hibernate

      spring

      db

      junit

      * 建三個(gè)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層相應(yīng)的包中寫接口和類

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

      * 在cn.itcast.s2sh0909.test包中新建一個(gè)類SessionFactoryTest,目的是為了測試SessionFactory

      是否配置正確

      * 寫spring的聲明式事務(wù)處理

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

      * 通過savePerson方法測試聲明式事務(wù)處理

      在Struts.xml中的action配置中,class應(yīng)該寫applicationContext.xml中配置Action類bean的id.

      第二篇:Spring IOC原理總結(jié)

      Spring IOC原理總結(jié)

      Spring容器高層視圖Spring 啟動(dòng)時(shí)讀取應(yīng)用程序提供的Bean配置信息,并在Spring容器中生成一份相應(yīng)的Bean配置注冊表,然后根據(jù)這張注冊表實(shí)例化Bean,裝配好Bean之間的依賴關(guān)系,為上層應(yīng)用提供準(zhǔn)備就緒的運(yùn)行環(huán)境。Bean緩存池:HashMap實(shí)現(xiàn)IOC容器介紹Spring 通過一個(gè)配置文件描述 Bean 及 Bean 之間的依賴關(guān)系,利用 Java 語言的反射功能實(shí)例化 Bean 并建立 Bean 之間的依賴關(guān)系。Spring 的 IoC 容器在完成這些底層工作的基礎(chǔ)上,還提供了 Bean 實(shí)例緩存、生命周期管理、Bean 實(shí)例代理、事件發(fā)布、資源裝載等高級(jí)服務(wù)。BeanFactory 是 Spring 框架的基礎(chǔ)設(shè)施,面向 Spring 本身;ApplicationContext 面向使用 Spring 框架的開發(fā)者,幾乎所有的應(yīng)用場合我們都直接使用 ApplicationContext 而非底層的 BeanFactory。BeanFactoryBeanFactory體系架構(gòu):BeanDefinitionRegistry: Spring 配置文件中每一個(gè)節(jié)點(diǎn)元素在 Spring 容器里都通過一個(gè) BeanDefinition 對(duì)象表示,它描述了 Bean 的配置信息。而 BeanDefinitionRegistry 接口提供了向容器手工注冊 BeanDefinition 對(duì)象的方法。BeanFactory 接口位于類結(jié)構(gòu)樹的頂端,它最主要的方法就是 getBean(String beanName),該方法從容器中返回特定名稱的 Bean,BeanFactory 的功能通過其他的接口得到不斷擴(kuò)展:ListableBeanFactory:該接口定義了訪問容器中 Bean 基本信息的若干方法,如查看Bean 的個(gè)數(shù)、獲取某一類型 Bean 的配置名、查看容器中是否包括某一 Bean 等方法;HierarchicalBeanFactory:父子級(jí)聯(lián) IoC 容器的接口,子容器可以通過接口方法訪問父容器; 通過 HierarchicalBeanFactory 接口,Spring 的 IoC 容器可以建立父子層級(jí)關(guān)聯(lián)的容器體系,子容器可以訪問父容器中的 Bean,但父容器不能訪問子容器的 Bean。Spring 使用父子容器實(shí)現(xiàn)了很多功能,比如在 Spring MVC 中,展現(xiàn)層 Bean 位于一個(gè)子容器中,而業(yè)務(wù)層和持久層的 Bean 位于父容器中。這樣,展現(xiàn)層 Bean 就可以引用業(yè)務(wù)層和持久層的 Bean,而業(yè)務(wù)層和持久層的 Bean 則看不到展現(xiàn)層的 Bean。ConfigurableBeanFactory:是一個(gè)重要的接口,增強(qiáng)了 IoC 容器的可定制性,它定義了設(shè)置類裝載器、屬性編輯器、容器初始化后置處理器等方法;AutowireCapableBeanFactory:定義了將容器中的 Bean 按某種規(guī)則(如按名字匹配、按類型匹配等)進(jìn)行自動(dòng)裝配的方法;SingletonBeanRegistry:定義了允許在運(yùn)行期間向容器注冊單實(shí)例 Bean 的方法;例子:使用 Spring 配置文件為 Car 提供配置信息:beans.xml:通過 BeanFactory 裝載配置文件,啟動(dòng) Spring IoC 容器:XmlBeanFactory 通過 Resource 裝載 Spring 配置信息并啟動(dòng) IoC 容器,然后就可以通過 BeanFactory#getBean(beanName)方法從 IoC 容器中獲取 Bean 了。通過 BeanFactory 啟動(dòng)IoC 容器時(shí),并不會(huì)初始化配置文件中定義的 Bean,初始化動(dòng)作發(fā)生在第一個(gè)調(diào)用時(shí)。對(duì)于單實(shí)例(singleton)的 Bean 來說,BeanFactory會(huì)緩存 Bean 實(shí)例,所以第二次使用 getBean()獲取 Bean 時(shí)將直接從 IoC 容器的緩存中獲取 Bean 實(shí)例。Spring 在 DefaultSingletonBeanRegistry 類中提供了一個(gè)用于緩存單實(shí)例 Bean 的緩存器,它是一個(gè)用HashMap 實(shí)現(xiàn)的緩存器,單實(shí)例的 Bean 以 beanName 為鍵保存在這個(gè)HashMap 中。值得一提的是,在初始化 BeanFactory 時(shí),必須為其提供一種日志框架,比如使用Log4J,即在類路徑下提供 Log4J 配置文件,這樣啟動(dòng) Spring 容器才不會(huì)報(bào)錯(cuò)。ApplicationContextApplicationContext 由 BeanFactory 派生而來,提供了更多面向?qū)嶋H應(yīng)用的功能。在BeanFactory 中,很多功能需要以編程的方式實(shí)現(xiàn),而在 ApplicationContext 中則可以通過配置的方式實(shí)現(xiàn)。ApplicationContext 繼承了 HierarchicalBeanFactory 和 ListableBeanFactory 接口,在此基礎(chǔ)上,還通過多個(gè)其他的接口擴(kuò)展了 BeanFactory 的功能:ClassPathXmlApplicationContext:默認(rèn)從類路徑加載配置文件FileSystemXmlApplicationContext:默認(rèn)從文件系統(tǒng)中裝載配置文件ApplicationEventPublisher:讓容器擁有發(fā)布應(yīng)用上下文事件的功能,包括容器啟動(dòng)事件、關(guān)閉事件等。實(shí)現(xiàn)了 ApplicationListener 事件監(jiān)聽接口的 Bean 可以接收到容器事件,并對(duì)事件進(jìn)行響應(yīng)處理。在 ApplicationContext 抽象實(shí)現(xiàn)類AbstractApplicationContext 中,我們可以發(fā)現(xiàn)存在一個(gè) ApplicationEventMulticaster,它負(fù)責(zé)保存所有監(jiān)聽器,以便在容器產(chǎn)生上下文事件時(shí)通知這些事件監(jiān)聽者。MessageSource:為應(yīng)用提供 i18n 國際化消息訪問的功能;ResourcePatternResolver : 所 有 ApplicationContext 實(shí)現(xiàn)類都實(shí)現(xiàn)了類似于PathMatchingResourcePatternResolver 的功能,可以通過帶前綴的 Ant 風(fēng)格的資源文件路徑裝載 Spring 的配置文件。LifeCycle:該接口是 Spring 2.0 加入的,該接口提供了 start()和 stop()兩個(gè)方法,主要用于控制異步處理過程。在具體使用時(shí),該接口同時(shí)被 ApplicationContext 實(shí)現(xiàn)及具體 Bean 實(shí)現(xiàn),ApplicationContext 會(huì)將 start/stop 的信息傳遞給容器中所有實(shí)現(xiàn)了該接口的 Bean,以達(dá)到管理和控制 JMX、任務(wù)調(diào)度等目的。ConfigurableApplicationContext 擴(kuò)展于

      ApplicationContext,它新增加了兩個(gè)主要的方法: refresh()和 close(),讓 ApplicationContext 具有啟動(dòng)、刷新和關(guān)閉應(yīng)用上下文的能力。在應(yīng)用上下文關(guān)閉的情況下調(diào)用 refresh()即可啟動(dòng)應(yīng)用上下文,在已經(jīng)啟動(dòng)的狀態(tài)下,調(diào)用 refresh()則清除緩存并重新裝載配置信息,而調(diào)用close()則可關(guān)閉應(yīng)用上下文。這些接口方法為容器的控制管理帶來了便利,但作為開發(fā)者,我們并不需要過多關(guān)心這些方法。使用:如果配置文件放置在類路徑下,用戶可以優(yōu)先使用 ClassPathXmlApplicationContext 實(shí)現(xiàn)類:如果配置文件放置在文件系統(tǒng)的路徑下,則可以優(yōu)先考慮使用

      FileSystemXmlApplicationContext 實(shí)現(xiàn)類:Spring 3.0 支持基于類注解的配置方式,主要功能來自于 Spring 的一個(gè)名為 JavaConfig 子項(xiàng)目,目前 JavaConfig已經(jīng)升級(jí)為 Spring核心框架的一部分。ApplicationContext 在初始化應(yīng)用上下文時(shí)就實(shí)例化所有單實(shí)例的 Bean。WebApplicationContextWebApplication體系架構(gòu):WebApplicationContext 是專門為 Web 應(yīng)用準(zhǔn)備的,它允許從相對(duì)于 Web 根目錄的路徑中裝載配置文件完成初始化工作。從WebApplicationContext 中可以獲得

      ServletContext 的引用,整個(gè) Web 應(yīng)用上下文對(duì)象將作為屬性放置到 ServletContext 中,以便 Web 應(yīng)用環(huán)境可以訪問 Spring 應(yīng)用上下文。WebApplicationContext 定義了一個(gè)常量ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,在上下文啟動(dòng)時(shí),WebApplicationContext 實(shí)例即以此為鍵放置在 ServletContext 的屬性列表中,因此我們可以直接通過以下語句從 Web 容器中獲取WebApplicationContext:Spring 和 Web 應(yīng)用的上下文融合:WebApplicationContext 的初始化方式:WebApplicationContext 需要 ServletContext 實(shí)例,它必須在擁有 Web 容器的前提下才能完成啟動(dòng)的工作??梢栽?web.xml 中配置自啟動(dòng)的 Servlet 或定義 Web 容器監(jiān)聽器(ServletContextListener),借助這兩者中的任何一個(gè)就可以完成啟動(dòng) Spring Web 應(yīng)用上下文的工作。Spring 分別提供了用于啟動(dòng) WebApplicationContext 的 Servlet 和 Web 容器監(jiān)聽器:org.springframework.web.context.ContextLoaderServlet;org.springframework.web.context.ContextLoaderListener由于 WebApplicationContext 需要使用日志功能,比如日志框架使用Log4J,用戶可以將 Log4J 的配置文件放置到類路徑 WEB-INF/classes 下,這時(shí) Log4J 引擎即可順利啟動(dòng)。如果 Log4J 配置文件放置在其他位置,用戶還必須在 web.xml 指定 Log4J 配置文件位置。Bean的生命周期1.當(dāng)調(diào)用者通過 getBean(beanName)向容器請求某一個(gè) Bean 時(shí),如果容器注冊了org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor 接口,在實(shí)例化 Bean 之前,將調(diào)用接口的 postProcessBeforeInstantiation()方法;2.根據(jù)配置情況調(diào)用 Bean 構(gòu)造函數(shù)或工廠方法實(shí)例化 Bean;3.如果容器注冊了 InstantiationAwareBeanPostProcessor 接口,在實(shí)例化 Bean 之后,調(diào)用該接口的

      postProcessAfterInstantiation()方法,可在這里對(duì)已經(jīng)實(shí)例化的對(duì)象進(jìn)行一些“梳妝打扮”;4.如果 Bean 配置了屬性信息,容器在這一步著手將配置值設(shè)置到 Bean 對(duì)應(yīng)的屬性中,不過在設(shè)置每個(gè)屬性之前將先調(diào)用InstantiationAwareBeanPostProcessor 接口的postProcessPropertyValues()方法;5.調(diào)用 Bean 的屬性設(shè)置方法設(shè)置屬性值;6.如果 Bean 實(shí)現(xiàn)了

      org.springframework.beans.factory.BeanNameAware 接口,將調(diào)用setBeanName()接口方法,將配置文件中該 Bean 對(duì)應(yīng)的名稱設(shè)置到 Bean 中;7.如果 Bean 實(shí)現(xiàn)了 org.springframework.beans.factory.BeanFactoryAware 接口,將調(diào)用 setBeanFactory()接口方法,將 BeanFactory 容器實(shí)例設(shè)置到 Bean 中;8.如果 BeanFactory 裝配了 org.springframework.beans.factory.config.BeanPostProcessor后處理器,將調(diào)用 BeanPostProcessor 的 Object postProcessBeforeInitialization(Object bean, String beanName)接口方法對(duì) Bean 進(jìn)行加工操作。其中入?yún)?bean 是當(dāng)前正在處理的 Bean,而 beanName 是當(dāng)前 Bean 的配置名,返回的對(duì)象為加工處理后的 Bean。用戶可以使用該方法對(duì)某些 Bean 進(jìn)行特殊的處理,甚至改變 Bean 的行為,BeanPostProcessor 在 Spring 框架中占有重要的地位,為容器提供對(duì) Bean 進(jìn)行后續(xù)加工處理的切入點(diǎn),Spring 容器所提供的各種“神奇功能”(如 AOP,動(dòng)態(tài)代理等)都通過 BeanPostProcessor 實(shí)施;9.如果 Bean 實(shí)現(xiàn)了 InitializingBean 的接口,將調(diào)用接口的

      afterPropertiesSet()方法;10.如果在通過 init-method 屬性定義了初始化方法,將執(zhí)行這個(gè)方法;11.BeanPostProcessor 后處理器定義了兩個(gè)方法:其一是 postProcessBeforeInitialization()在第 8 步調(diào)用;其二是 Object postProcessAfterInitialization(Object bean, String beanName)方法,這個(gè)方法在此時(shí)調(diào)用,容器再次獲得對(duì) Bean 進(jìn)行加工處理的機(jī)會(huì);12.如果在中指定 Bean 的作用范圍為 scope=“prototype”,將 Bean 返回給調(diào)用者,調(diào)用者負(fù)責(zé) Bean 后續(xù)生命的管理,Spring 不再管理這個(gè) Bean 的生命周期。如果作用范圍設(shè)置為 scope=“singleton”,則將 Bean 放入到 Spring IoC 容器的緩存池中,并將 Bean引用返回給調(diào)用者,Spring 繼續(xù)對(duì)這些 Bean 進(jìn)行后續(xù)的生命管理;13.對(duì)于 scope=“singleton”的 Bean,當(dāng)容器關(guān)閉時(shí),將觸發(fā) Spring 對(duì) Bean 的后續(xù)生命周期的管理工作,首先如果 Bean 實(shí)現(xiàn)了 DisposableBean 接口,則將調(diào)用接口的afterPropertiesSet()方法,可以在此編寫釋放資源、記錄日志等操作;14.對(duì)于 scope=“singleton”的 Bean,如果通過的 destroy-method 屬性指定了 Bean 的銷毀方法,Spring 將執(zhí)行 Bean 的這個(gè)方法,完成 Bean 資源的釋放等操作。可以將這些方法大致劃分為三類:Bean 自身的方法:如調(diào)用 Bean 構(gòu)造函數(shù)實(shí)例化 Bean,調(diào)用 Setter 設(shè)置 Bean 的屬性值以及通過的 init-method 和 destroy-method 所指定的方法;Bean 級(jí)生命周期接口方法:如 BeanNameAware、BeanFactoryAware、InitializingBean 和 DisposableBean,這些接口方法由 Bean 類直接實(shí)現(xiàn);容器級(jí)生命周期接口方法:在上圖中帶“★” 的步驟是由 InstantiationAwareBean PostProcessor 和BeanPostProcessor 這兩個(gè)接口實(shí)現(xiàn),一般稱它們的實(shí)現(xiàn)類為“ 后處理器”。后處理器接口一般不由 Bean 本身實(shí)現(xiàn),它們獨(dú)立于 Bean,實(shí)現(xiàn)類以容器附加裝置的形式注冊到 Spring 容器中并通過接口反射為 Spring 容器預(yù)先識(shí)別。當(dāng)Spring 容器創(chuàng)建任何 Bean 的時(shí)候,這些后處理器都會(huì)發(fā)生作用,所以這些后處理器的影響是全局性的。當(dāng)然,用戶可以通過合理地編寫后處理器,讓其僅對(duì)感興趣Bean 進(jìn)行加工處理ApplicationContext 和 BeanFactory 另一個(gè)最大的不同之處在于:ApplicationContext會(huì)利用 Java 反射機(jī)制自動(dòng)識(shí)別出配置文件中定義的 BeanPostProcessor、InstantiationAwareBeanPostProcessor 和

      BeanFactoryPostProcessor,并自動(dòng)將它們注冊到應(yīng)用上下文中;而后者需要在代碼中通過手工調(diào)用

      addBeanPostProcessor()方法進(jìn)行注冊。這也是為什么在應(yīng)用開發(fā)時(shí),我們普遍使用 ApplicationContext 而很少使用 BeanFactory 的原因之一IOC容器工作機(jī)制容器啟動(dòng)過程web環(huán)境下Spring容器、SpringMVC容器啟動(dòng)過程:首先,對(duì)于一個(gè)web應(yīng)用,其部署在web容器中,web容器提供其一個(gè)全局的上下文環(huán)境,這個(gè)上下文就是ServletContext,其為后面的spring IoC容器提供宿主環(huán)境;其次,在web.xml中會(huì)提供有contextLoaderListener(或ContextLoaderServlet)。在web容器啟動(dòng)時(shí),會(huì)觸發(fā)容器初始化事件,此時(shí)contextLoaderListener會(huì)監(jiān)聽到這個(gè)事件,其contextInitialized方法會(huì)被調(diào)用,在這個(gè)方法中,spring會(huì)初始化一個(gè)啟動(dòng)上下文,這個(gè)上下文被稱為根上下文,即WebApplicationContext,這是一個(gè)接口類,確切的說,其實(shí)際的實(shí)現(xiàn)類是XmlWebApplicationContext。這個(gè)就是spring的IoC容器,其對(duì)應(yīng)的Bean定義的配置由web.xml中的context-param標(biāo)簽指定。在這個(gè)IoC容器初始化完畢后,spring容器以WebApplicationContext.ROOTWEBAPPLICATIONCONTEXTATTRIBUTE為屬性Key,將其存儲(chǔ)到ServletContext中,便于獲?。辉俅?,contextLoaderListener監(jiān)聽器初始化完畢后,開始初始化web.xml中配置的Servlet,這個(gè)servlet可以配置多個(gè),以最常見的DispatcherServlet為例(Spring MVC),這個(gè)servlet實(shí)際上是一個(gè)標(biāo)準(zhǔn)的前端控制器,用以轉(zhuǎn)發(fā)、匹配、處理每個(gè)servlet請求。DispatcherServlet上下文在初始化的時(shí)候會(huì)建立自己的IoC上下文容器,用以持有spring mvc相關(guān)的bean,這個(gè)servlet自己持有的上下文默認(rèn)實(shí)現(xiàn)類也是XmlWebApplicationContext。在建立DispatcherServlet自己的IoC上下文時(shí),會(huì)利用WebApplicationContext.ROOTWEBAPPLICATIONCONTEXTATTRIBUTE先從ServletContext中獲取之前的根上下文(即WebApplicationContext)作為自己上下文的parent上下文(即第2步中初始化的XmlWebApplicationContext作為自己的父容器)。有了這個(gè)parent上下文之后,再初始化自己持有的上下文(這個(gè)DispatcherServlet初始化自己上下文的工作在其initStrategies方法中可以看到,大概的工作就是初始化處理器映射、視圖解析等)。初始化完畢后,spring以與servlet的名字相關(guān)(此處不是簡單的以servlet名為Key,而是通過一些轉(zhuǎn)換)的屬性為屬性Key,也將其存到ServletContext中,以便后續(xù)使用。這樣每個(gè)servlet就持有自己的上下文,即擁有自己獨(dú)立的bean空間,同時(shí)各個(gè)servlet共享相同的bean,即根上下文定義的那些bean。Bean加載過程Spring的高明之處在于,它使用眾多接口描繪出了所有裝置的藍(lán)圖,構(gòu)建好Spring的骨架,繼而通過繼承體系層層推演,不斷豐富,最終讓Spring成為有血有肉的完整的框架。所以查看Spring框架的源碼時(shí),有兩條清晰可見的脈絡(luò):1)接口層描述了容器的重要組件及組件間的協(xié)作關(guān)系;2)繼承體系逐步實(shí)現(xiàn)組件的各項(xiàng)功能。接口層清晰地勾勒出Spring框架的高層功能,框架脈絡(luò)呼之欲出。有了接口層抽象的描述后,不但Spring自己可以提供具體的實(shí)現(xiàn),任何第三方組織也可以提供不同實(shí)現(xiàn),可以說Spring完善的接口層使框架的擴(kuò)展性得到了很好的保證??v向繼承體系的逐步擴(kuò)展,分步驟地實(shí)現(xiàn)框架的功能,這種實(shí)現(xiàn)方案保證了框架功能不會(huì)堆積在某些類的身上,造成過重的代碼邏輯負(fù)載,框架的復(fù)雜度被完美地分解開了。Spring組件按其所承擔(dān)的角色可以劃分為兩類:1)物料組件:Resource、BeanDefinition、PropertyEditor以及最終的Bean等,它們是加工流程中被加工、被消費(fèi)的組件,就像流水線上被加工的物料;BeanDefinition:Spring通過BeanDefinition將配置文件中的配置信息轉(zhuǎn)換為容器的內(nèi)部表示,并將這些BeanDefinition注冊到BeanDefinitionRegistry中。Spring容器的后續(xù)操作直接從BeanDefinitionRegistry中讀取配置信息。2)加工設(shè)備組件:ResourceLoader、BeanDefinitionReader、BeanFactoryPostProcessor、InstantiationStrategy以及BeanWrapper等組件像是流水線上不同環(huán)節(jié)的加工設(shè)備,對(duì)物料組件進(jìn)行加工處理。InstantiationStrategy:負(fù)責(zé)實(shí)例化Bean操作,相當(dāng)于Java語言中new的功能,并不會(huì)參與Bean屬性的配置工作。屬性填充工作留待BeanWrapper完成BeanWrapper:繼承了PropertyAccessor和PropertyEditorRegistry接口,BeanWrapperImpl內(nèi)部封裝了兩類組件:(1)被封裝的目標(biāo)Bean(2)一套用于設(shè)置Bean屬性的屬性編輯器;具有三重身份:(1)Bean包裹器(2)屬性訪問器(3)屬性編輯器注冊表。PropertyAccessor:定義了各種訪問Bean屬性的方法。PropertyEditorRegistry:屬性編輯器的注冊表該圖描述了Spring容器從加載配置文件到創(chuàng)建出一個(gè)完整Bean的作業(yè)流程:1、ResourceLoader從存儲(chǔ)介質(zhì)中加載Spring配置信息,并使用Resource表示這個(gè)配置文件的資源;2、BeanDefinitionReader讀取Resource所指向的配置文件資源,然后解析配置文件。配置文件中每一個(gè)解析成一個(gè)BeanDefinition對(duì)象,并保存到BeanDefinitionRegistry中;3、容器掃描BeanDefinitionRegistry中的BeanDefinition,使用Java的反射機(jī)制自動(dòng)識(shí)別出Bean工廠后處理后器(實(shí)現(xiàn)BeanFactoryPostProcessor接口)的Bean,然后調(diào)用這些Bean工廠后處理器對(duì)BeanDefinitionRegistry中的BeanDefinition進(jìn)行加工處理。主要完成以下兩項(xiàng)工作:1)對(duì)使用到占位符的元素標(biāo)簽進(jìn)行解析,得到最終的配置值,這意味對(duì)一些半成品式的BeanDefinition對(duì)象進(jìn)行加工處理并得到成品的BeanDefinition對(duì)象;2)對(duì)BeanDefinitionRegistry中的BeanDefinition進(jìn)行掃描,通過Java反射機(jī)制找出所有屬性編輯器的Bean(實(shí)現(xiàn)java.beans.PropertyEditor接口的Bean),并自動(dòng)將它們注冊到Spring容器的屬性編輯器注冊表中(PropertyEditorRegistry);4.Spring容器從BeanDefinitionRegistry中取出加工后的BeanDefinition,并調(diào)用InstantiationStrategy著手進(jìn)行Bean實(shí)例化的工作;5.在實(shí)例化Bean時(shí),Spring容器使用BeanWrapper對(duì)Bean進(jìn)行封裝,BeanWrapper提供了很多以Java反射機(jī)制操作Bean的方法,它將結(jié)合該Bean的BeanDefinition以及容器中屬性編輯器,完成Bean屬性的設(shè)置工作;6.利用容器中注冊的Bean后處理器(實(shí)現(xiàn)BeanPostProcessor接口的Bean)對(duì)已經(jīng)完成屬性設(shè)置工作的Bean進(jìn)行后續(xù)加工,直接裝配出一個(gè)準(zhǔn)備就緒的Bean??偨Y(jié)Spring IOC容器主要有繼承體系底層的BeanFactory、高層的ApplicationContext和WebApplicationContextBean有自己的生命周期容器啟動(dòng)原理:Spring應(yīng)用的IOC容器通過tomcat的Servlet或Listener監(jiān)聽啟動(dòng)加載;Spring MVC的容器由DispatchServlet作為入口加載;Spring容器是Spring MVC容器的父容器容器加載Bean原理:BeanDefinitionReader讀取Resource所指向的配置文件資源,然后解析配置文件。配置文件中每一個(gè)解析成一個(gè)BeanDefinition對(duì)象,并保存到BeanDefinitionRegistry中;容器掃描BeanDefinitionRegistry中的BeanDefinition;調(diào)用InstantiationStrategy進(jìn)行Bean實(shí)例化的工作;使用BeanWrapper完成Bean屬性的設(shè)置工作;單例Bean緩存池:Spring 在 DefaultSingletonBeanRegistry 類中提供了一個(gè)用于緩存單實(shí)例 Bean 的緩存器,它是一個(gè)用 HashMap 實(shí)現(xiàn)的緩存器,單實(shí)例的 Bean 以 beanName 為鍵保存在這個(gè)HashMap 中。

      1、具有1-5工作經(jīng)驗(yàn)的,面對(duì)目前流行的技術(shù)不知從何下手,需要突破技術(shù)瓶頸的可以加群。

      2、在公司待久了,過得很安逸,但跳槽時(shí)面試碰壁。需要在短時(shí)間內(nèi)進(jìn)修、跳槽拿高薪的可以加群。

      3、如果沒有工作經(jīng)驗(yàn),但基礎(chǔ)非常扎實(shí),對(duì)java工作機(jī)制,常用設(shè)計(jì)思想,常用java開發(fā)框架掌握熟練的,可以加群。

      4、覺得自己很牛B,一般需求都能搞定。但是所學(xué)的知識(shí)點(diǎn)沒有系統(tǒng)化,很難在技術(shù)領(lǐng)域繼續(xù)突破的可以加群。5.Java架構(gòu)進(jìn)階群號(hào):668395460

      第三篇:Spring MVC使用總結(jié)

      Org.springframework.ui.ModelMap傳遞數(shù)據(jù)供視圖所用

      ${base}取的是當(dāng)前頁面所在的路徑。它隨頁面的位置改變而改變。

      web開發(fā)一共有四個(gè)作用域,范圍從高到低分為appliaction作用域(全局作用域),session作用域,request作用域和page作用域。

      ${base}是el表達(dá)式語法,它會(huì)自動(dòng)先從page作用域開始查找,如果沒有再找request作用域,然后是session,最后再是application作用域。

      動(dòng)態(tài)網(wǎng)頁項(xiàng)目,頁面直接訪問的是webcontent下的。

      Weblogic.xml配置文件作用: weblogic.xml主要配置web容器的一些屬性,比較JSP編譯時(shí)間間隔、編譯路徑等 web.xml是配置整個(gè)應(yīng)用工程的屬性,如servlet等

      你用tomcatjboss等web容器和weblogic一樣,它們單獨(dú)有自己的配置文件

      視圖解析器

      SpringMVC用于處理視圖最重要的兩個(gè)接口是ViewResolver和View

      FreeMarkerViewResolver是繼承自springmvc的一個(gè)接口,只是和freemarker同名而已

      XmlViewResolver

      貌似工具庫里面定義好了(如ftl、分詞庫),然后在common中用

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

      視頻

      spring mvc

      freemarker

      金磊

      今天問題

      VECTOR-

      腳本語言-

      注解--

      為什么frame要經(jīng)過FrameAct.java一下,再返回??

      @Controller是spring的Controller控制器?

      為什么我新建的html是

      別人是

      <body>瀏覽器不支持Frames框架時(shí)顯示的內(nèi)容</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環(huán)境搭建:

      1、web.xml,啟動(dòng)Dispatcher2、創(chuàng)建servlet3、創(chuàng)建controller.java(在spring mvc中,只要加了@controller就說明它是一個(gè)controller控制器了,非常簡單)

      其它注解

      @RequestMapping(“/frame/config_main.do”)只要頁面上訪問這個(gè)路徑,就會(huì)返回這

      個(gè)注解下的方法的return的方法。

      學(xué)習(xí)任何MVC都要掌握的步驟:

      1、搭建環(huán)境(寫hello world)

      2、傳值

      3、截獲值

      4、分發(fā)值

      5、源碼

      6、異常

      7、上傳下載

      第四篇:Spring 事物機(jī)制總結(jié)

      spring兩種事物處理機(jī)制,一是聲明式事物,二是編程式事物 聲明式事物

      1)Spring的聲明式事務(wù)管理在底層是建立在AOP的基礎(chǔ)之上的。其本質(zhì)是對(duì)方法前后進(jìn)行攔截,然后在目標(biāo)方法開始之前創(chuàng)建或者加入一個(gè)事務(wù),在執(zhí)行完目標(biāo)方法之后根據(jù)執(zhí)行情況提交或者回滾事務(wù)。聲明式事務(wù)最大的優(yōu)點(diǎn)就是不需要通過編程的方式管理事務(wù),這樣就不需要在業(yè)務(wù)邏輯代碼中摻雜事務(wù)管理的代碼,只需在配置文件中做相關(guān)的事務(wù)規(guī)則聲明(或通過等價(jià)的基于標(biāo)注的方式),便可以將事務(wù)規(guī)則應(yīng)用到業(yè)務(wù)邏輯中。因?yàn)槭聞?wù)管理本身就是一個(gè)典型的橫切邏輯,正是AOP的用武之地。Spring開發(fā)團(tuán)隊(duì)也意識(shí)到了這一點(diǎn),為聲明式事務(wù)提供了簡單而強(qiáng)大的支持。Spring強(qiáng)大的聲明式事務(wù)管理功能,這主要得益于Spring依賴注入容器和Spring AOP的支持。依賴注入容器為聲明式事務(wù)管理提供了基礎(chǔ)設(shè)施,使得Bean對(duì)于Spring框架而言是可管理的;而Spring AOP則是聲明式事務(wù)管理的直接實(shí)現(xiàn)者。和編程式事務(wù)相比,聲明式事務(wù)唯一不足地方是,后者的最細(xì)粒度只能作用到方法級(jí)別,無法做到像編程式事務(wù)那樣可以作用到代碼塊級(jí)別。但是即便有這樣的需求,也存在很多變通的方法,比如,可以將需要進(jìn)行事務(wù)管理的代碼塊獨(dú)立為方法等等。2)5種配置方式

      Spring配置文件中關(guān)于事務(wù)配置總是由三個(gè)組成部分,分別是DataSource、TransactionManager和代理機(jī)制這三部分,無論哪種配置方式,一般變化的只是代理機(jī)制這部分。

      DataSource、TransactionManager這兩部分只是會(huì)根據(jù)數(shù)據(jù)訪問方式有所變化,比如使用hibernate進(jìn)行數(shù)據(jù)訪問時(shí),DataSource實(shí)際為SessionFactory,TransactionManager的實(shí)現(xiàn)為HibernateTransactionManager。關(guān)系圖如下:

      [html] view plain copy

      1.

      3.4.5.

      6.7.

      8.

      9.10.

      注意:sessionFactorty和transactionManager是下面5中配置方式的基本配置,第一種方式:每個(gè)Bean都有一個(gè)代理

      [html] view plain copy

      1.

      2.

      3.4.

      5.6.

      7.

      8.9.

      10.11.

      12.13.

      14.PROPAGATION_REQUIRED

      15.

      16.

      17.

      第二種方式:所有Bean共享一個(gè)代理基類

      [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標(biāo)簽配置的攔截器

      [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.}

      編程式事務(wù)

      Spring的編程式事務(wù)即在代碼中使用編程的方式進(jìn)行事務(wù)處理,可以做到比聲明式事務(wù)更細(xì)粒度。有兩種方式一是使用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教學(xué)大綱

      Spring教學(xué)大綱

      1.Spring簡介:一站式框架 Spring能為我們帶來什么? a)使層與層之間只依賴于接口

      b)Spring的bean工廠為我們創(chuàng)建對(duì)象,不需要程序員自己new對(duì)象了(IOC:inverse of control控制反轉(zhuǎn),DI:depandency injection 依賴注入)c)可以管理事務(wù)

      d)可以對(duì)其他框架進(jìn)行管理(struts2,hibernate)e)也可以使用spring自帶的springMVC框架 f)也可以使用spring的JDBC模板

      2.Spring IOC(DI)常用的注入方式: 1.構(gòu)造器注入

      2.setter注入(set方法注入)(常用)注意:setter方法注入,必須提供無參構(gòu)造方法 3.Spring Bean的范圍 常用的范圍:

      Singleton:單例模式,建議不要存在具有狀態(tài)的成員變量,該項(xiàng)為默認(rèn)項(xiàng)

      Prototype:只要使用該對(duì)象,那就創(chuàng)建一個(gè)新的 注意:spring在與struts2整合時(shí),需要將產(chǎn)生action的bean,配置為scope=”prototype” 4.Spring自動(dòng)裝配 a)byName 要求:bean id必須與包含此類成員的類的成員變量名相同

      b)byType 根據(jù)類型查找,將查找到的對(duì)象注入到成員變量中

      5.使用spring自帶的JDBC模板

      6.事務(wù)管理

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

      1.在項(xiàng)目中要引入struts2-spring-plugin-x-x-x.jar文件,該文件的位置:struts2的lib目錄下

      2.在struts.xml中配置:,說明使用spring的對(duì)象工廠產(chǎn)生action對(duì)象 3.在web.xml中要設(shè)置spring的監(jiān)聽,來查找spring文件的位置

      org.springframework.web.context.ContextLoaderListener

      contextConfigLocation

      classpath*:applicationContext-beans.xml

      注意:在spring中生成action對(duì)象時(shí),最好配置scope=”prototype”

      9.Ssh整合開發(fā)

      下載spring總結(jié)word格式文檔
      下載spring總結(jié).doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        spring教學(xué)設(shè)計(jì)稿

        Spring 教學(xué)目標(biāo): 1. 能聽、說、認(rèn)讀描述春天的詞句。如:The grass is green.等。 2. 能用Let’s …. We can…. The … is/are….等句子在具體的情境中運(yùn)用。 3. 感受英語詩......

        spring英語作文[5篇模版]

        spring英語作文4篇在日復(fù)一日的'學(xué)習(xí)、工作或生活中,大家都寫過作文吧,作文是一種言語活動(dòng),具有高度的綜合性和創(chuàng)造性。那么問題來了,到底應(yīng)如何寫一篇優(yōu)秀的作文呢?以下是小編為......

        英語詩歌: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》適用于大班的英語主題教學(xué)活動(dòng)當(dāng)中,讓幼兒復(fù)習(xí)顏色green/red/yellow/white,在游戲中復(fù)習(xí)短語:springiscoming;I'mwind/spring/tree/flower/bi......

        幼兒園大班英語教案《spring is coming》(合集)

        大班英語教案《spring is coming》適用于大班的英語主題教學(xué)活動(dòng)當(dāng)中,讓幼兒復(fù)習(xí)顏色green/red/yellow/white,在游戲中復(fù)習(xí)短語:springiscoming;I'mwind/spring/tree/flower/bi......

        Lesson 36 Spring in China教案

        Lesson 36 Spring in China教學(xué)設(shè)計(jì) 彬縣紫薇中學(xué) 頃文娟 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(英文版春節(jié)介紹)(定稿)

        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......