Spring框架入門


一. 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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM