Oracle技術支援是如何分析資料庫效能問題的
Spring
-
Spring概述
是一個開源框架,是為了解決企業應用程式開發複雜性而建立的
Spring是潛在地一站式解決方案,定位於與典型應用相關的大部分基礎結構
Spring致力於提供一種方法管理你的業務物件
Spring是全面的和模組化的
它的設計從底部幫助你編寫易於測試的程式碼 -
Spring特徵
輕量
從大小與開銷兩方面而言Spring都是輕量的
容器
Spring包含並管理應用物件的配置和生命週期,在這個意義上它是一種容器
控制反轉
不是物件從容器中查詢依賴,而是容器在物件初始化時不等物件請求就主動將依賴傳遞給它
面向切面
允許通過分離應用的業務邏輯與系統級服務(例如審計(auditing)和事務(transaction)管理)進行內聚性的開發 -
優點
低侵入式設計,程式碼汙染極低
獨立於各種應用伺服器,基於Spring框架的應用,可以真正實現Write Once,Run Anywhere的承諾
Spring的DI機制降低了業務物件替換的複雜性,提高了元件之間的解耦
Spring的AOP支援允許將一些通用任務如安全、事務、日誌等進行集中式管理,從而提供了更好的複用
Spring的ORM和DAO提供了與第三方持久層框架的良好整合,並簡化了底層的資料庫訪問
Spring並不強制應用完全依賴於Spring,開發者可自由選用Spring框架的部分或全部 -
Spring7個模組
Spring Core核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要元件是 BeanFactory,它是工廠模式的實現。BeanFactory 使用控制反轉(IOC) 模式將應用程式的配置和依賴性規範與實際的應用程式程式碼分開。
Spring Context 上下文:Spring 上下文是一個配置檔案,向 Spring 框架提供上下文資訊。Spring 上下文包括企業服務,例如 JNDI、EJB、電子郵件、國際化、校驗和排程功能。
Spring AOP:通過配置管理特性,Spring AOP 模組直接將面向方面的程式設計功能整合到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何物件支援 AOP。Spring AOP 模組為基於 Spring 的應用程式中的物件提供了事務管理服務。通過使用 Spring AOP,不用依賴 EJB 元件,就可以將宣告性事務管理整合到應用程式中。
Spring DAO:
Spring ORM:Spring 框架插入了若干個 ORM 框架,從而提供了 ORM 的物件關係工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有這些都遵從 Spring 的通用事務和 DAO 異常層次結構。
Spring Web 模組:Web 上下文模組建立在應用程式上下文模組之上,為基於 Web 的應用程式提供了上下文。所以,Spring 框架支援與 Jakarta Struts 的整合。Web 模組還簡化了處理多部分請求以及將請求引數繫結到域物件的工作。
Spring MVC 框架:MVC 框架是一個全功能的構建 Web 應用程式的 MVC 實現。通過策略介面,MVC 框架變成為高度可配置的,MVC 容納了大量檢視技術,其中包括 JSP、Velocity、Tiles、iText 和 POI。
Spring 框架的功能可以用在任何 J2EE 伺服器中,大多數功能也適用於不受管理的環境。Spring 的核心要點是:支援不繫結到特定 J2EE 服務的可重用業務和資料訪問物件。毫無疑問,這樣的物件可以在不同 J2EE 環境 (Web 或 EJB)、獨立應用程式、測試環境之間重用。 -
Bean和Spring IOC容器
由Spring IOC容器管理的那些組成你應用程式的物件我們就叫它Bean, Bean就是由Spring容器初始化、裝配及管理的物件。
Bean物件的兩種模型 :
單態 模型提供了具有特定名稱的物件的共享例項,可以在查詢時對其進行檢索。Singleton 是預設的也是最常用的物件模型。對於無狀態服務物件很理想。
原型 模型確保每次檢索都會建立單獨的物件。在每個使用者都需要自己的物件時,原型模型最適合。 -
ApplicationContext介面
BeanFactory介面
BeanFactory介面提供了IoC容器最基本功能
ApplicationContext介面
擴充套件了BeanFactory,還提供了與Spring AOP整合、國際化處理、事件傳播及提供不同層次的context實現常見的ApplicationContext實現類
ClassPathXmlApplicationContext ApplicationContext實現,從classpath獲取配置檔案; BeanFactory beanFactory = new ClassPathXmlApplicationContext("classpath.xml"); FileSystemXmlApplicationContext ApplicationContext實現,從檔案系統獲取配置檔案。 BeanFactory beanFactory = new FileSystemXmlApplicationContext("fileSystemConfig.xml");
ApplicationContext常用方法
Object getBean(String name) 根據名稱返回一個Bean,客戶端需要自己進行型別轉換; T getBean(String name, Class<T> requiredType) 根據名稱和指定的型別返回一個Bean,客戶端無需自己進行型別轉換,如果型別轉換失敗,容器丟擲異常; T getBean(Class<T> requiredType) 根據指定的型別返回一個Bean,客戶端無需自己進行型別轉換,如果沒有或有多於一個Bean存在容器將丟擲異常; Map<String, T> getBeansOfType(Class<T> type) 根據指定的型別返回一個鍵值為名字和值為Bean物件的 Map,如果沒有Bean物件存在則返回空的Map。
在applicationContext中配置Bea
applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"> <bean id="hello" name="hello1" class="com.trkj.beans.HelloWorld"></bean> </beans>
-
Spring零配置
零配置
零配置是指不需要在xml檔案中配置Bean,而是藉助註解實現
配置Bean的註解
@Component :標註一個普通的Spring Bean類。
@Controller : 標註一個控制器元件類。
@Service: 標註一個業務邏輯元件類。
@Repository : 標註一個DAO元件類。applicationContext.xml自動掃描Bean:
<!--自動掃描Bean--> <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"> <context:annotation-config /> <context:component-scan base-package="com.trkj.*" /> </beans>