Spring入門詳細教程(一)

来源:https://www.cnblogs.com/jichi/archive/2018/12/23/10165538.html
-Advertisement-
Play Games

一、spring概述 Spring是一個開放源代碼的設計層面框架,他解決的是業務邏輯層和其他各層的松耦合問題,因此它將面向介面的編程思想貫穿整個系統應用。Spring是於2003 年興起的一個輕量級的Java 開發框架,由Rod Johnson創建。簡單來說,Spring是一個分層的JavaSE/E ...


一、spring概述

Spring是一個開放源代碼的設計層面框架,他解決的是業務邏輯層和其他各層的松耦合問題,因此它將面向介面的編程思想貫穿整個系統應用。Spring是於2003 年興起的一個輕量級的Java 開發框架,由Rod Johnson創建。簡單來說,Spring是一個分層的JavaSE/EE full-stack(一站式) 輕量級開源框架。

二、Spring特點

1、方便解耦,簡化開發。

2、AOP編程的支持。

3、聲明式事務的支持。

4、方便程式的測試

5、方便集成各種優秀框架

三、spring下載

下載地址:https://repo.spring.io/libs-release-local/org/springframework/spring/

進入後可選擇下載版本,選擇版本後,進入目錄結構。其中dist是最終發佈版本,包含開發所需lib和源碼。docs是開發文檔。schema是一些約束文件。

四、spring搭建入門案例

1、在eclipse中創建一個動態的web工程。

2、導入spring的基礎lib包到lib文件夾下。

3、編寫一個實體User類

package com.jichi.entity;

public class User {
    private String name;
    private Integer age ;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
}

4、創建applicationContext.xml文件

在src文件下,新建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"
    xmlns:util="http://www.springframework.org/schema/util"
    xmlns:jee="http://www.springframework.org/schema/jee"
    xmlns:lang="http://www.springframework.org/schema/lang"
    xmlns:jms="http://www.springframework.org/schema/jms"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:jdbc="http://www.springframework.org/schema/jdbc"
    xmlns:cache="http://www.springframework.org/schema/cache"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:oxm="http://www.springframework.org/schema/oxm"
    xmlns:task="http://www.springframework.org/schema/task"
    xmlns:tool="http://www.springframework.org/schema/tool"
    xmlns:websocket="http://www.springframework.org/schema/websocket"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd
        http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd
        http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
        http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm.xsd
        http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd
        http://www.springframework.org/schema/tool http://www.springframework.org/schema/tool/spring-tool.xsd
        http://www.springframework.org/schema/websocket http://www.springframework.org/schema/websocket/spring-websocket.xsd">
        
</beans>

5、在beans內將user實體配置進去

<bean name="user" class="com.jichi.entity.User"></bean>

6、書寫測試代碼

public class TestDemo {
    @Test
    public void test1(){
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        User user = (User) ac.getBean("user");
        System.out.println(user);
    }
}

7、結果顯示,將user對象交給spring容器管理成功

com.jichi.entity.User@db5e9c

五、spring中的工廠BeanFactory與ApplicationContext的區別

1、BeanFactory

spring原始介面,功能較為單一,在從容器中獲得對象的時候才會創建對象。

2、ApplicationContext

每次啟動容器的時候,初始化容器中的所有對象並提供更多功能。

其中的實現類ClassPathXmlApplicationContext是載入類路徑下的spring配置文件,FileSystemXmlApplicationContext是載入本地磁碟下spring的配置文件。

3、實現圖

4、結論

web開發中,使用applicationContext。

在資源匱乏的環境可以使用BeanFactory。

六、spring的bean元素屬性詳解

1、class:被容器管理對象的完整類名。

2、name:被容器管理對象的名稱,根據此名稱從容器中獲得該對象,可以重覆,可以使用特殊字元。

3、id:被容器管理對象的唯一標識,id不可重覆,不可使用特殊字元,作用與name相同,建議使用name。

4、scope:

  (1)singleton(預設):單例對象,該對象在spring容器中只會存在一個。

  (2)prototype:多例模式,配置為多例的對象不會在spring容器中創建,只有在從容器中要獲取該對象的時候,容器對該對象進行創建,每次創建都是一個新的對象。註意在與struts2配合使用的時候,struts2中的action對象必須要配置成prototype這種多例模式。

  (3)request:web項目中,創建一個對象,將其存放在request域中。

  (4)session:web項目中,創建一個對象,將其存放在session域中。

5、init-method與destory-method

init-method是對象創建的時候所執行的方法,destory-method是對象銷毀時所執行的方法。對象必須是單例的,同時容器關閉的時候,對象的銷毀方法才會執行。

<bean name="user" class="com.jichi.entity.User" init-method="init" destroy-method="destory"></bean>
public class User {
    private String name;
    private Integer age ;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public void init(){
        System.out.println("初始");
    }
    public void destory(){
        System.out.println("銷毀");
    }
}

七、spring創建對象的方式

1、空參構造方法

<bean name="user" class="com.jichi.entity.User" ></bean>

2、靜態工廠實例化

(1)創建一個工廠類

public class UserFactory {
    public static User createUser(){
        return new User();
    }
}

(2)配置

<bean name="user" class="com.jichi.factory.UserFactory" factory-method="createUser"></bean>

3、實例工廠實例化

(1)創建一個工廠類

public class UserFactory {
    public static User createUser(){
        return new User();
    }
}

(2)配置

<bean name="user" factory-bean="userFactory" factory-method="createUser"></bean>

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 開心一刻 小明的朋友骨折了,小明去他家裡看他。他老婆很細心的為他換藥,敷藥,然後出去買菜。小明滿臉羡慕地說:你特麽真幸福啊,你老婆對你那麼好!朋友哭得稀里嘩啦的說:兄弟你別說了,我幸福個錘子,就是她把我打骨折的。 揣摩下此刻男人的內心 路漫漫其修遠兮,吾將上下而求索! github:https ...
  • 1、資料庫的安裝和連接 2、創建表操作 3、查詢操作 Python查詢Mysql使用 fetchone() 方法獲取單條數據, 使用fetchall() 方法獲取多條數據。 fetchone(): 該方法獲取下一個查詢結果集。結果集是一個對象 fetchall(): 接收全部的返回結果行. rowc ...
  • 轉載:https://www.cnblogs.com/gonjan-blog/p/6685611.html 關於Java中的動態代理,我們首先需要瞭解的是一種常用的設計模式--代理模式,而對於代理,根據創建代理類的時間點,又可以分為靜態代理和動態代理。 一、代理模式 代理模式是常用的java設計模式 ...
  • 發生原因:運行javac編譯時沒有加上擴展名。解決方法:加上.java擴展名重新編譯即可,"xxxxxx.java"。 ...
  • IDE:Integrated Develop Environment,集成開發環境。利用IDE編程的好處不用多說,節省大量的時間和精力。 現在總結一下利用IDE編寫一個HelloWorld的具體流程。首先是建立一個項目,得有一個項目名。 具體就是:File->New->Java Project 接下 ...
  • 使用迭代器remove方法刪除元素 public class InteratorDemo { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("老師"); list.ad ...
  • 在spring 3.2中,新增了@ControllerAdvice 註解,可以用於定義@ExceptionHandler、@InitBinder、@ModelAttribute,並應用到所有@RequestMapping中。@ControllerAdvice官方文檔。創建全局異常處理類:通過使用@C... ...
  • 簡介 本系列基於 的官方文檔,除去了文檔中一些冗餘的東西,加上了一些自己的理解,意圖是在於幫助更多初識 的人來進行一次探險。 本系列建議具有Java基礎和Spring使用經驗的同學學習。 什麼是Spring Boot 在使用之前,我們先來看看 到底是個啥,從字面意義上去理解,是Spring的一個引導 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...