第一部分:Spring架構的分析。 兩個核心概念:IoC、AOP。 IoC:實際上依靠工廠模式,實現控制反轉。 html
步驟:讀取配置文件,利用Java反射機制,生成對象,將對象返回給調用者。 前端
瞭解兩個類:BeanFactory和ApplictionContext java
Spring源碼結構的解讀:用Ant生成Spring相關包,文檔等。 CVS下載Spring源碼。安裝Spring。 spring
Ioc詳解: Bean的生命週期:定義、初始化、使用、銷燬。 Bean的初始化。express
經過AutoWrite、dependency-check、Setter方法、setBeabFactory、 經過配置初始化前、後方法等。編程
Bean建立的方式有:單例建立,原型建立。Spring只能管理單例建立的Bean。 安全
propertyConfigurer、ProertyOverrideConfiger 配置其它須要加入到Spring裏的文件。 服務器
初始化spring的方法:ClassPathXmlApplicationContext 網絡
BeanFactoryAware與BeanNameAware ApplicationContextAware Spring屬性編輯器。事件監聽器。 架構
BeanFactory提供管理和操做Bean的功能。
ApplictionContext繼承了BeanFactory類,因此提供比BeanFactory更強大的功能。 在整合Web項目時候,ctx能夠自動初始化。能夠經過ContextLoaderListener或ContextLoaderServlet實現自 動加載。
AOP詳解: 核心關注點,橫切關注點,建議,切入點,織入。OOP編程與AOP編程。提供系統級的服務。與具體業務關係不大。 經常使用於系統級服務,好比:日誌、事務、權限等。
使用AOP編程的步驟:先抽象出橫切面,即次要業務,再用一個建議者(advice)管理橫面, 定義須要使用橫切功能的點(pointcut),把切面織入(weave)進去。方式有前,後,中等。
<tx:advice id="txAdvice" transaction-manager="reportTransactionManager">
<tx:attributes>
<tx:method name="*" rollback-for="Exception"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="txOperation" expression="@annotation(org.springframework.transaction.annotation.Transactional)" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="txOperation"/>
</aop:config>
Spring架構模塊:AOP、IOC、ORM、DAO、Spring Web、Spring上下文、Spring MVC
第二部分:Spring應用開發。
1.JNDI(Java Naming and Directory Interface):java命名目錄服務。
通常用於數據源配置。 使用JNDI經常使用的三個類:AbstractJndiLocator JndiObjectFactoryBean JndiObjectTargetSource 建議直接使用JndiObjectFactoryBean這種形式,它是用於產品部署場合。而JndiObjectTargetSource用於產品 開發場合。 JndiTemplate類,用於改造操做。方便使用。
2.JTA(Java Transaction API):Java事務API. platformTransactionManager:Spring的事務管理中,這是最基本的接口。
已經實現上面接口的經常使用事務管理器:JDBC事務、JTA事務、Hibernate事務、JDO事務、OJB事務、JMS事務。
TransactionDefinition:事務的屬性定義。 7種事務移植策略[事務的傳播屬性]: PROPAGATION_REQUIRED(若是已在事務中,則使用原來的,不然新開一個事務) PROPAGATION_SUPPORTS(若有事務,則以事務的形式運行,如沒有事務,則以非事務的形式運行) PROPAGATION_MANDATORY(必須在一個事務中運行) PROPAGATION_REQUIRES_NEW(在新事務中運行,即每次啓動一個事務) PROPAGATION_NOT_SUPPORTED(不能運行在事務中,若是有事務,則客戶事務掛起) PROPAGATION_NEVER(不能運行在事務中,不然拋異常) PROPAGATION_NESTED(支持嵌套式事務) TransactionTemplate事務模板的使用。[在編程式事務管理裏,可使用]
3.JMS(Java Message Service):Java消息服務。
JmsTemplate的使用:配置相關的xml,主要有目的地的配置 template的配置 JmsTemplate與MessageCreator結合使用,完成消息的發送工做。 詳細瞭解消息的發送與接收原理。Bean轉換功能的實現。
4.JavaMail:Java郵件服務。 MailSender接口的兩個實現類:CosMailSenderImpl、JavaMailSenderImpl CosMailSenderImpl用於通常郵件的發送,在配置文件裏配置CosMailSenderImpl和SimpleMailMessage 信息。 JavaMailSenderImpl用於發送複雜的郵件,配置JavaMailSenderImpl 用MimeMessagePreparator的回調方法,實現郵件發送。
5.EJB(Enterprise JavaBean):企業級Bean。Spring對無狀態會話Bean有很好的支持。 幾種Bean 無狀態、有狀態、JMSBean(消息驅動Bean)等。主要了解Spring對AbstractStatelessSessionBean的支持。
6.持久化服務:DAO ORM JDBC 瞭解JdbcDaoSupport HibernateDaoSupport JdoDaoSupport的使用。它們都繼承了DaoSupport。 具體的使用通常是用它們的模板類:JdbcTemplate/HibernateTemplate/JdoTemplate類進行數據操做。 以JdbcTemplate的使用爲例子,說明其應用的基本思路: 1.配置數據源,把數據關聯到JdbcTemplate上,只需關聯一次,便可知足全部的要使用的JdbcTemplate。 [擴展知識點:Spring配置數據源的方式 dbcp BoneCP c3p0] 2.JDBC事務的管理:DataSourceTransactionManager 3.Spring與Hibernate的集成。瞭解關係型數據與JavaBean對象的映射。
7.任務調度服務:Queatz Timer Spring集成了上面兩種定義任務調度服務。 一個是開源社區裏的項目,一個是Java2版本里提供的任務調度器。 Queatz與Spring集成要了解的幾個經常使用類:QueatzJobBean JobDetailBean SimpleTriggerBean等。 重點看MethodInvokingJobDetailFactoryBean Timer與上面的那個相似。它是Java原本就帶有的類。不用從新學習新的一套類庫。 基本使用:Spring經過配置文件,定義任務執行的時間點與週期,咱們只須要開要執行的任務類便可。
8.遠程服務:支持RMI、Hessian、Burlap、HTTP Invoker、Web服務(JAX-RPC)、企業Bean。 補充知識點:遠程服務調用,參數的傳遞,一般參數類序列化,以便能在客戶端與服務器端進行交互。 RMI(Remote Method Invocation):JDK自己提供的用於支持分佈式開發的技術。在網絡受限制的狀況不適用。 Hession與Burlap:因爲上述的技術,服務器端與客戶端都要用Java語言編寫,而且它們之間不能有防火牆, 正是這些緣由,出現了這兩種技術。要用到第三方的序列化機制。 HTTP Invoker:集合了上面三種技術的優勢。JDK自己提供的序列化機制。支持在網絡受限的狀況使用。
第三部分:Spring高級應用。
1.視圖技術集成:Struts、Spring MVC、Tapestry、JSF等。 Spring MVC DispatherServlet前端控制器,用於請求分發。 處理流程: DispatherServlet接收http請求,分發給相應用Control,Control轉換請求信息,處理請求, 返回ModelAndView 解釋 返回到視圖。
Tapestry與Spring集成:Tapestry是基於組件、事件的OO編寫Web視圖層的框架。 幾個概念:Visit Engine HttpSession Page和組件模板。。 Tapestry由三部分組成:HTML模板,頁面規範文件,Java文件。
JSF(JavaServer Faces):基於Web前端標準而開發的一個框架。
2.Spring安全框架:Acegi 與事務管理同樣,都是聲明式管理,原理相同,都是抽象出切面單獨進行開發。
原文來自:http://www.cnblogs.com/lils/p/3723480.html