當前位置:編程學習大全網 - 行動軟體 - 快速切入:Spring框架核心概念總覽

快速切入:Spring框架核心概念總覽

簡而言之,Spring是企業級Java的開源開發框架。Spring框架的核心功能可用於開發任何java應用程序。Spring框架的核心模塊如下:

任何由 Spring IoC 容器初始化的普通 Java 類都稱為 Spring Bean。我們使用 spring 應用程序上下文來獲取 Spring Bean 實例。 Spring IoC Container 管理 Spring Bean 範圍/作用域的生命周期並在 bean 中註入任何所需的依賴項。

Spring bean的不同作用域:

對於任何 Java 應用程序,都有兩個不同的作用域,稱為單例(Singleton)和原型(Prototype)

主要有三種不同的作用域(或範圍),即 請求(request)、會話(session)和全局會話(global-session) ,專門針對基於 Spring 的 Java Web 應用程序。

Singleton 是任何 bean 的默認作用域。這意味著每個 IoC 容器將創建單個 bean 實例。因此,單例 bean 不是線程安全的。

要設置 spring bean 的範圍,我們可以在 標簽中使用scope屬性。 @scope 用於基於註釋的 DI。

Spring 容器是 Spring 框架的核心。容器將創建對象,把它們連接在壹起,配置它們,並管理它們從創建到銷毀的完整生命周期。 Spring 容器使用依賴註入 (DI) 來管理組成應用程序的組件。

有兩種不同類型的容器:

BeanFactory 容器 :這是 Spring 容器的核心。 org.springframework.beans.factory.BeanFactory 是壹個接口,充當 IoC 容器,它實例化、配置和管理許多 bean。應用示例如下:

ApplicationContext 容器 :org.springframework.context.ApplicationContext 接口也充當 IoC 容器,但 ApplicationContext 接口建立在 BeanFactory 接口之上,以提供壹些BeanFactory 額外的功能,例如與 Spring 的 AOP 的簡單集成、消息資源處理(對於 I18N )、事件傳播、Web 應用程序的應用層特定上下文(例如 WebApplicationContext)。所以使用 ApplicationContext 比使用 BeanFactory更好些。示例代碼如下:

對於基於註解的依賴註入,使用@Autowired 註解。標有@Component/@Service/@Repository 等的類可以註入到標有@Autowired 的屬性中

@Autowired 應用於:

1)基於構造器和setter的區別

2)context:annotation-config 和 context:component-scan 的區別

3)@Component、@Controller、@Repository & @Service 註解的區別

如果壹個類用@Component/@Controller/@Service/@Repository 註解標記,那麽Spring DI 容器可以在組件掃描機制期間識別該類。但是,對於服務層類使用@Service 是個好主意,並且@Controller 應該在spring mvc web 控制器中使用。 @Repository 用於將 DAO 導入 DI 容器。此外,任何未經檢查的異常都將被轉換為 Spring DataAccessException。

4)ViewResolver 與 MultipartResolver

ViewResolver 用於按名稱解析視圖。該接口由 InternalResourceViewResolver 實現 ;

MultipartResolver 用於處理 web 應用程序中的文件上傳。

5)Spring MVC 中的驗證

org.springframework.validation.Validator 接口支持 spring MVC 驗證。驗證表單的壹些實用方法是 ValidationUtils 類中的 rejectIfEmptyOrWhitespace() 和 rejectIfEmpty()。示例如下:

Spring MVC 中驗證表單的另壹種方法是:

HandlerInterceptor 接口充當 spring MVC 攔截器。它在服務請求之前和之後攔截。如果您實現了 HandlerInterceptor 接口,則 preHandle()、postHandle() 和 afterCompletion() 是要覆蓋的方法。但是,為了避免覆蓋,您可以使用 HandlerInterceptorAdapter 類。

實現 ServletContextAware 和 ServletConfigAware 接口並覆蓋以下方法:

數據庫事務是壹組被視為關聯工作單元的操作。事務的主要原則是提交所有操作或在失敗的情況下回滾所有操作。在交易中提交數據時,我們需要確保交易協議/稱為 ACID(原子性-壹致性-隔離-持久性)的屬性:

全局事務 vs 本地事務:

臟讀、幻讀和不可重復讀:

隔離與傳播:

在舊版本的 spring 和 hibernate 集成中,需要 HibernateDAOSupport 和 HibernateTemplate。但是,較新版本的 Spring 不建議使用這兩個類(這裏僅做了解)。

通常我們從 HibernateDAOSupport 擴展我們的 DAO 類,並且 getHibernateTemplate() 方法將可用於Hibernate會話中的 CRUD 操作。由於這不是推薦的方法,所以我們在 DAO 中註入會話工廠(SessionFactory)。下面的代碼片段會給妳壹些關於 HibernateDAOSupport 和 HibernateTemplate 的想法:

DAO 是壹種設計模式,以最大限度地減少應用程序和後端之間的耦合;

ORM 處理如何將對象映射到對象關系數據庫中,從而減少數據庫和應用程序之間的耦合。

如果您在沒有 DAO 的情況下使用 ORM,那麽您的應用程序將變得依賴於 ORM,因此很難從壹個 ORM(例如Hibernate)移動到另壹個 ORM(例如 NoSQL)。

Spring DAO 是使用@Repository 註解實現的。 Spring 存儲庫擴展 JPARepository 並傳遞 JPA 實體及其主鍵。

最後,關於Spring框架相關的概念就簡要介紹到這裏,希望這能給妳進入並深入Spring技術棧壹個簡單入口,而不會被Spring技術生態所驚嚇(Spring現在都成軟件開發技術的全家桶了,啥都有)——日進壹步,鍥而不舍,終將大成!

  • 上一篇:合金彈頭合集的遊戲簡介
  • 下一篇:《達子的春天》 好看嗎
  • copyright 2024編程學習大全網