一. spring是什么?
Spring是分層的JavaSE/EE (一站式) 輕量級開源的容器框架,以IOC(Inverse of Control 控制反轉:對象之間的關系由容器創建,降低了程序之間的依賴性)和AOP(Aspect Oriented Programming 面向切面編程)為內核的容器框架
一站式、分層:
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模塊抽取了這些重復代碼,因此你可以保持你的數據庫訪問代碼干凈簡潔,並且可以防止因關閉數據庫資源失敗而引起的問題。
這個模塊還在幾種
另外,這個模塊還使用了Spring的AOP模塊為Spring應用中的對象提供了事務管理服務。
3.5 對象/關系映射集成模塊
對那些更喜歡使用對象/關系映射工具而不是直接使用JDBC的人,Spring提供了ORM模塊。Spring並不試圖實現它自己的ORM解決方案,而是為幾種流行的
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