一. spring是什么?
Spring是分層的JavaSE/EE (一站式) 輕量級開源的容器框架,以IOC(Inverse of Control 控制反轉:物件之間的關系由容器創建,降低了程式之間的依賴性)和AOP(Aspect Oriented Programming 面向切面編程)為內核的容器框架
一站式、分層:
JavaEE的有三層結構:web層、業務層、資料訪問層(持久層,集成層),而Spring框架有對三層的每層解決方案:
web層:Spring MVC
持久層:JDBC Template (applicationContext.xml)
業務層:Spring的Bean管理(Bean:是spring根據用戶提供相應的需求創建的物件,由IOC管理)(service)
spring官網:https://spring.io/
二.spring受歡迎的原因
Spring的英文翻譯為春天,可以說是給Java程式員帶來了春天,因為它極大的簡化了開發,有效的解決了當時軟體開發比較復雜的問題(當時采用EJB開發JAVA EE應用,但EJB存在著學習成本太高,開發效率比較低,資源消耗很高的問題),Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情,然而,Spring的用途不僅限于服務器端的開發,從簡單性、可測驗性和松耦合的角度而言,任何Java應用都可以從Spring中受益,可以說Spring是一個提供了更完善開發環境的一個框架,可以為POJO(Plain Ordinary Java Object)物件提供企業級的服務,
Spring的優秀之處:
1、最完善的輕量級核心框架,
2、簡化了開發,方便解耦
3、 宣告式事務的支持:只需要通過配置就可以完成對事務的管理,而無需手動編程
4、集成了Toplink, Hibernate, JDO, and iBATIS SQL Maps等優秀框架,
5、強大的AOP功能:Spring提供面向切面編程,可以方便的實作對程式進行權限攔截、運行監控等功能,
6、 方便程式的測驗:Spring對Junit4支持,可以通過注解方便的測驗Spring程式
三.spring框架的七大組成模塊
3.1 核心容器模塊
這是Spring框架最基礎的部分,所有的Spring模塊都是在核心容器之上構建的,它提供了依賴注入(DependencyInjection)特征來實作容器對Bean的管理,這里最基本的概念是BeanFactory,它是任何Spring應用的核心,BeanFactory是工廠模式的一個實作,它使用IOC(控制反轉)將應用配置和依賴說明從實際的應用代碼中分離出來,
3.2 應用背景關系(Context)模塊(.xml檔案)
核心模塊的BeanFactory使Spring成為一個容器,而背景關系模塊使它成為一個框架,這個模塊擴展了BeanFactory的概念,增加了對國際化(I18N)訊息、事件傳播以及驗證的支持(Spring 背景關系是一個組態檔,向 Spring 框架提供背景關系資訊),
另外,這個模塊提供了許多企業服務,例如電子郵件、JNDI訪問、EJB集成、遠程以及時序調度(scheduling)服務,也包括了對模版框架例如Velocity和FreeMarker集成的支持,
3.3 Spring的AOP模塊
Spring在它的AOP模塊中提供了對面向切面編程的豐富支持,這個模塊是在Spring應用中實作切面編程的基礎,為了確保Spring與其它AOP框架的互用性,Spring的AOP支持基于AOP聯盟定義的API,AOP聯盟是一個開源專案,它的目標是通過定義一組共同的介面和組件來促進AOP的使用以及不同的AOP實作之間的互用性,通過訪問他們的站點,你可以找到關于AOP聯盟的更多內容,
Spring的AOP模塊也將元資料編程引入了Spring,使用Spring的元資料支持,你可以為你的源代碼增加注釋,指示Spring在何處以及如何應用切面函式,
3.4 JDBC抽象和DAO模塊
使用JDBC經常導致大量的重復代碼,取得連接、創建陳述句、處理結果集,然后關閉連接,Spring的JDBC和DAO模塊抽取了這些重復代碼,因此你可以保持你的資料庫訪問代碼干凈簡潔,并且可以防止因關閉資料庫資源失敗而引起的問題,
這個模塊還在幾種資料庫服務器給出的錯誤訊息之上建立了一個有意義的例外層,使你不用再試圖破譯神秘的私有的SQL錯誤訊息!
另外,這個模塊還使用了Spring的AOP模塊為Spring應用中的物件提供了事務管理服務,
3.5 物件/關系映射集成模塊
對那些更喜歡使用物件/關系映射工具而不是直接使用JDBC的人,Spring提供了ORM模塊,Spring并不試圖實作它自己的ORM解決方案,而是為幾種流行的ORM框架提供了集成方案,包括Hibernate、JDO和iBATIS SQL映射,Spring的事務管理支持這些ORM框架中的每一個也包括JDBC,
3.6 Spring的Web模塊
Web背景關系模塊建立于應用背景關系模塊之上,提供了一個適合于Web應用的背景關系,另外,這個模塊還提供了一些面向服務支持,例如:實作檔案上傳的multipart請求,它也提供了Spring和其它Web框架的集成,比如Struts、WebWork,
3.7 Spring的MVC框架模塊
Spring為構建Web應用提供了一個功能全面的MVC框架,雖然Spring可以很容易地與其它MVC框架集成,例如Struts,但Spring的MVC框架使用IoC對控制邏輯和業務物件提供了完全的分離,
它也允許你宣告性地將請求引數系結到你的業務物件中,此外,Spring的MVC框架還可以利用Spring的任何其它服務,例如國際化資訊與驗證,
四 .入門案例
4.1 匯入依賴
<dependencies>
<!-- Spring的核心依賴-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.10</version>
</dependency>
?
<!-- 用于測驗的依賴-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
</dependency>
</dependencies>
4.2 在Java的service創建介面和它的實作類
UserService的介面
package com.qf.service; ? public interface UserService { public void addUser(); ? public void deleteUser(); ? }
UserService的實作類
package com.qf.service.impl; ? import com.qf.service.UserService; ? public class UserServiceImpl implements UserService { ? @Override public void addUser() { System.out.println("addUser...."); } ? @Override public void deleteUser() { System.out.println("deleteUser...."); } }
4.3 創建applicationContext.xml組態檔
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" 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.xsd"> ? <!-- <bean></bean>標簽:創建bean物件 --> <!-- 無參構造創建物件 --> <bean id="userService" class="com.qf.service.impl.UserServiceImpl"></bean>
4.4 創建測驗類
public class SpringTest { ? @Test public void test() { //加載組態檔,創建applicationContext物件 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); ? //獲取Bean物件(即userService) UserService userService = (UserService)applicationContext.getBean("userService"); ? //呼叫方法 userService.addUser(); userService.deleteUser(); }
4.5 測驗結果
addUser....
deleteUser....
?
Process finished with exit code 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/319572.html
標籤:Java
