?

淺談Spring框架的基本應用

2022-05-30 02:46翟高粵
客聯 2022年7期

翟高粵

摘 要:Spring是當今流行的Java Web開發框架,它能解決大部分企業應用開發的復雜性問題。對于Java開發人員來說,掌握Spring框架的基本使用,已是入職Java軟件開發行業的必備技能之一。本文主要介紹Spring框架及其體系結構的基本內容及應用,并通過一個實例說明Spring框架的基本使用方法,理解Spring框架中IoC及DI的基本思想,對于Spring的入門學習有一定參考價值。

關鍵詞:Spring框架;Java EE;IoC;DI

一、引言

Spring 是在2003年興起的一個輕量級的Java應用開發框架,它是為了解決企業應用開發的復雜性而創建的。Spring 的核心是控制反轉(IoC)和面向切面編程(AOP)。Spring 是可以在 Java SE/EE 中使用的輕量級開源框架。Spring通過使用基本的JavaBean來實現以前只能由EJB(企業JavaBean)完成的工作,一面世即迅速取代EJB臃腫、低效的開發模式,受到大批JAVA開發者的歡迎和支持。Spring致力于JavaEE應用各層的解決方案,在表現層它提供了SpringMVC以及與Struts框架的整合功能;在業務邏輯層可以管理事務、記錄日志等;在持久層可以整合MyBatis、Hibernate、JdbcTemplate等技術。因此,Spring框架是企業應用開發很好的框架之一。

二、相關理論

(一)Spring框架的特點

Spring具有簡單、可測試和松耦合等特點,Spring不僅可以用于服務器端的開發,也可以用于任何Java軟件開發中。具體有如下特點:

(1)非侵入式設計

(2)方便解耦,簡化開發

(3)支持AOP

(4)支持聲明式事務處理

(5)方便程序測試

(6)方便集成各種框架

(7)降低Java EE API的使用難度

(二)Spring的體系結構

Spring框架采用的分層設計架構,它根據一系列的功能分成20個模塊,具體如圖1所示。接下來對主要核心模塊進行簡單介紹。

(1)Core Container(核心容器)

Spring的核心容器是其他模塊建立的基礎,它主要由Beans模塊、Core模塊、Context模塊、Context-support模塊和SpEL模塊構成。Beans模塊提供了工廠模式的經典實現;Core模塊提供了Spring框架的基本組成部分,包括IcC和DI功能;Context模塊建立在Core和Beans模塊的基礎上,它是訪問定義和配置的任何對象的媒介;Context-support提供了對第三方庫嵌入Spring應用的集成支持;SpEL模塊提供了Spring Expression Language支持,是運行時查詢和操作對象圖的強大的表達式語言。

(2)Data Access/Integration(數據訪問/集成)

數據訪問集成包括JDBC、ORM、OXM、JMS和Transactions模塊。JDBC模塊提供了一個JDBC的抽象層,大幅度地減少了在開發過程中對數據庫操作的編碼;ORM提供了對流行的對象關系映射API,包括JPA、JDO和Hibernate提供了集成層支持;OXM模塊提供了一個支持對象/OXM映射的抽象層實現;JMS模塊指的是Java的消息傳遞服務;Transactions事務模塊支持對實現特殊接口以及所有POJO類的編程和聲明式的事務管理。

(3)Web

Spring的Web層包括WebSocket、Servlet、Web和Portlet模塊。WebSocket模塊提了WebSocket和SockJS的實現,以及對STOMP的支持;Servlet模塊提供了Spring的模型-視圖-控制器(MVC)和REST WebServices實現的Web應用程序;Web模塊提供了基本的Web開發集成特性;Portlet模塊提供了在Portlet環境中使用MVC實現,類似Servlet模塊的功能。

(4)其他模塊

Spring的其他模塊有AOP、Aspects、Instrumentation以及Test模塊。AOP模塊提供了面向切面編程實現,允許定義方法攔截器和切入點,將代碼按照功能進行分離,以降低耦合性;Aspects模塊提供了與AspectsJ的集成功能,AspectsJ是一個功能強大且成熟的面向切面編程(AOP)框架;Instrumentation模塊提供了類工具的支持和類加載器的實現,可以在特定的應用服務器中使用;Messaging模塊提供了對消息傳遞體系結構和協議的支持;Test模塊提供了對單元測試和集成測試的支持;

三、Spring核心容器

Spring框架的主要功能是通過其核心容器來實現的,Sping框架提供了兩種核心容器,分別為BeanFactory和ApplicationContext。

(一)BeanFactory容器

BeanFactory是由org.springframework.beans.factory.BeanFactory接口定義,是基礎類型的IoC容器,它提供了完整的IoC服務支持。BeanFactory是一個管理Bean的工廠,它主要負責初始化各種Bean,并調用它們的生命周期方法。

BeanFactory接口提供幾個實現類,其中最常用的是XmlBeanFactory,該類會通過XML配置文件中的定義來裝配Bean,語法實例如下:

BeanFactory beanFactory=new

XmlBeanFactory(new FileSystemResource(“c:/applicationContext.xml”);

(二)ApplicationContext

ApplicationContext是BeanFactory的子接口,也被稱為應用上下文,是另一種Spring核心容器。它由org.springframework.context.ApplicationContext接口定義,不僅包含了BeanFactory的所有功能,還添加了對國際化、資源訪問、事件傳播等方面的支持。創建ApplicationContext接口實例,通常采用兩種方法。

(1)通過ClassPathXmlApplicationContext創建

ClassPathXmlApplicationContext會從類路徑classPath中尋找指定的XML配置文件,找到并加載ApplicationContext的實例化工作,其使用語法如下:

ApplicationContext applicationContext=new ClassPathXmlApplicationContext(String configLocation)

(2)通過FileSystemXmlApplicationContext會從指定的文件系統路徑中尋找指定的XML配置文件,找到并裝載完成ApplicationContext的實例化工作,其使用語法如下:

ApplicationContext applicationContext=new FileSystemXmlApplicationContext(String configLocation)

與ClassPathXmlApplicationContext有所不同的是,在讀取Spring的配置文件時,FileSystemXmlApplicationContext不再從類路徑中讀取配置文件,而是通過參數指定配置文件的位置,這種采用絕對路徑的方式,會導致程序的靈活性變差,所以這種方法一般不推薦使用。

(三)Spring編程實現

以上是對Spring的核心容器的介紹,接下來通過一個實例說明Spring框架的編程步驟。

(1)在MyEclipse中,創建一個名為firstSpring的Web項目,將Spring的4個基礎包以及commons-logging的JAR包復制到lib目錄中,并發布到類路徑下,如圖2所示。

(2)在src目錄下,創建一個com.szjm.ioc包,并在包中創建接口UserDao,然后在接口中定義一個say()方法,代碼如下所示。

public interface UserDao{

public void say();}

(3)在com.szjm.ioc包下,創建UserDao接口的實現類UserDaoImpl,該類需要實現接口中的say()方法,并編寫一條輸出語句,代碼如下所示。

public class UserDaoImpl implements UserDao {

public void say() {

System.out.println("userDao say hello World !");

}

}

(4)在src目錄下,創建Spring的配置文件applicationContext.xml,并在配置文件中創建一個id為userDao的Bean,代碼如下所示。

<!-- 將指定類配置給Spring,讓Spring創建其對象的實例 -->

(5)在com.szjm.ioc包下,創建測試類TestIoC,并在類中編寫main() 方法,該main()方法需要初始化Spring容器,并加載配置文件,然后通過Spring容器獲取userDao實例,最后調用實例中的say()方法,代碼如下所示。

public class TestIoC {

public static void main(String[] args) {

ApplicationContext applicationContext =

new ClassPathXmlApplicationContext("applicationContext.xml");

UserDao userDao = (UserDao) applicationContext.getBean("userDao");

userDao.say();

}

}

執行上述程序后,在控制臺的輸出結果如下所示。

四、結論

本文主要介紹Spring框架的基礎知識及一般應用。首先講解了Spring框架的概念、作用、優點、體系結構,然后介紹了Spring的兩種核心容器,接下來通過一個實例來說明如何使用Spring框架,并初步掌握Spring框架的使用方法。

參考文獻:

[1]沃爾斯. Spring實戰 [M]. 人民郵電出版社,2016.

[2]卡內爾. Spring開發三劍客[M],人民郵電出版社, 2020.

[3] 陳恒等. Spring Boot從入門到實戰[M]. 清華大學出版社出版社,2020.

91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合