国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Spring概述與核心概念學(xué)習(xí) -- Spring入門(一)

這篇具有很好參考價(jià)值的文章主要介紹了Spring概述與核心概念學(xué)習(xí) -- Spring入門(一)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


前言

為了鞏固所學(xué)的知識,作者嘗試著開始發(fā)布一些學(xué)習(xí)筆記類的博客,方便日后回顧。當(dāng)然,如果能幫到一些萌新進(jìn)行新技術(shù)的學(xué)習(xí)那也是極好的。作者菜菜一枚,文章中如果有記錄錯(cuò)誤,歡迎讀者朋友們批評指正。
(博客的參考源碼以及可以在我主頁的資源里找到,如果在學(xué)習(xí)的過程中有什么疑問歡迎大家在評論區(qū)向我提出)


發(fā)現(xiàn)寶藏

前些天發(fā)現(xiàn)了一個(gè)巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。【寶藏入口】。

一、Spring是什么?

1.概述

  • Spring Framework 是一個(gè)功能強(qiáng)大的 Java 應(yīng)用程序框架,旨在提供高效且可擴(kuò)展的開發(fā)環(huán)境。
  • 它結(jié)合了輕量級的容器(IOC)和 依賴注入(DI) 功能,提供了一種使用 POJO 進(jìn)行容器配置和面向切面的編程的簡單方法,以及一組用于 AOP(切面編程) 的模塊。
  • Spring 框架還支持各種移動應(yīng)用開發(fā)技術(shù),如 Android 和 iOS。此外,它還提供了對事務(wù)管理、對象/關(guān)系映射、JavaBeans、JDBC、JMS 和其他技術(shù)的支持,從而確保高效開發(fā)。

2.了解spring家族

Spring概述與核心概念學(xué)習(xí) -- Spring入門(一),Spring入門,spring,java,后端
Spring概述與核心概念學(xué)習(xí) -- Spring入門(一),Spring入門,spring,java,后端
Spring概述與核心概念學(xué)習(xí) -- Spring入門(一),Spring入門,spring,java,后端

3.spring系統(tǒng)概述

Spring 有可能成為所有企業(yè)應(yīng)用程序的一站式服務(wù)點(diǎn),然而,Spring 是模塊化的,允許你挑選和選擇適用于你的模塊,不必要把剩余部分也引入。下面的部分對在 Spring 框架中所有可用的模塊給出了詳細(xì)的介紹。

Spring 框架提供約 20 個(gè)模塊,可以根據(jù)應(yīng)用程序的要求來使用。

Spring概述與核心概念學(xué)習(xí) -- Spring入門(一),Spring入門,spring,java,后端

  1. 核心容器(Core Container)

核心容器由 spring-core,spring-beans,spring-context,spring-context-support和spring-expression(SpEL,Spring 表達(dá)式語言,Spring Expression Language)等模塊組成,它們的細(xì)節(jié)如下:

spring-core 模塊提供了框架的基本組成部分,包括 IoC 和依賴注入功能。

spring-beans 模塊提供 BeanFactory,工廠模式的微妙實(shí)現(xiàn),它移除了編碼式單例的需要,并且可以把配置和依賴從實(shí)際編碼邏輯中解耦。

context 模塊建立在由 core和 beans 模塊的基礎(chǔ)上建立起來的,它以一種類似于 JNDI 注冊的方式訪問對象。Context 模塊繼承自 Bean 模塊,并且添加了國際化(比如,使用資源束)、事件傳播、資源加載和透明地創(chuàng)建上下文(比如,通過 Servelet 容器)等功能。Context 模塊也支持 Java EE 的功能,比如 EJB、JMX 和遠(yuǎn)程調(diào)用等。ApplicationContext 接口是 Context 模塊的焦點(diǎn)。spring-context-support 提供了對第三方集成到 Spring 上下文的支持,比如緩存(EhCache, Guava, JCache)、郵件(JavaMail)、調(diào)度(CommonJ, Quartz)、模板引擎(FreeMarker, JasperReports, Velocity)等。

spring-expression 模塊提供了強(qiáng)大的表達(dá)式語言,用于在運(yùn)行時(shí)查詢和操作對象圖。它是 JSP2.1 規(guī)范中定義的統(tǒng)一表達(dá)式語言的擴(kuò)展,支持 set 和 get 屬性值、屬性賦值、方法調(diào)用、訪問數(shù)組集合及索引的內(nèi)容、邏輯算術(shù)運(yùn)算、命名變量、通過名字從 Spring IoC 容器檢索對象,還支持列表的投影、選擇以及聚合等。
  1. 數(shù)據(jù)訪問/集成(Data Access/Integration)
    數(shù)據(jù)訪問/集成層包括 JDBC,ORM,OXM,JMS 和事務(wù)處理模塊,它們的細(xì)節(jié)如下:

(注:JDBC=Java Data Base Connectivity,ORM=Object Relational Mapping,OXM=Object XML Mapping,JMS=Java Message Service)

JDBC 模塊提供了 JDBC 抽象層,它消除了冗長的 JDBC 編碼和對數(shù)據(jù)庫供應(yīng)商特定錯(cuò)誤代碼的解析。

ORM 模塊提供了對流行的對象關(guān)系映射 API 的集成,包括 JPA、JDO 和 Hibernate 等。通過此模塊可以讓這些 ORM 框架和 spring的其它功能整合,比如前面提及的事務(wù)管理。

OXM 模塊提供了對 OXM 實(shí)現(xiàn)的支持,比如 JAXB、Castor、XML Beans、JiBX、XStream 等。

JMS 模塊包含生產(chǎn)(produce)和消費(fèi)(consume)消息的功能。從 Spring 4.1 開始,集成了 spring-messaging 模塊。

事務(wù)模塊為實(shí)現(xiàn)特殊接口類及所有的 POJO 支持編程式和聲明式事務(wù)管理。(注:編程式事務(wù)需要自己寫 beginTransaction()、commit()、rollback() 等事務(wù)管理方法,聲明式事務(wù)是通過注解或配置由 spring 自動處理,編程式事務(wù)粒度更細(xì))
  1. Web

Web 層由 Web,Web-MVC,Web-Socket 和 Web-Portlet 組成,它們的細(xì)節(jié)如下:

Web 模塊提供面向 web 的基本功能和面向 web 的應(yīng)用上下文,比如多部分(multipart)文件上傳功能、使用 Servlet 監(jiān)聽器初始化 IoC 容器等。它還包括 HTTP 客戶端以及 Spring 遠(yuǎn)程調(diào)用中與 web 相關(guān)的部分。

Web-MVC 模塊為 web 應(yīng)用提供了模型視圖控制(MVC)和 REST Web服務(wù)的實(shí)現(xiàn)。Spring 的 MVC 框架可以使領(lǐng)域模型代碼和 web 表單完全地分離,且可以與 Spring 框架的其它所有功能進(jìn)行集成。

Web-Socket 模塊為 WebSocket-based 提供了支持,而且在 web 應(yīng)用程序中提供了客戶端和服務(wù)器端之間通信的兩種方式。

Web-Portlet 模塊提供了用于 Portlet 環(huán)境的 MVC 實(shí)現(xiàn),并反映了 spring-webmvc 模塊的功能。 
  1. Test模塊

Test 模塊:Spring 支持 Junit 和 TestNG 測試框架,而且還額外提供了一些基于 Spring 的測試功能,比如在測試 Web 框架時(shí),模擬 Http 請求的功能。

  1. 其他

還有其他一些重要的模塊,像 AOP,Aspects,Instrumentation,Web 和測試模塊,它們的細(xì)節(jié)如下:

AOP 模塊提供了面向方面(切面)的編程實(shí)現(xiàn),允許你定義方法攔截器和切入點(diǎn)對代碼進(jìn)行干凈地解耦,從而使實(shí)現(xiàn)功能的代碼徹底的解耦出來。使用源碼級的元數(shù)據(jù),可以用類似于.Net屬性的方式合并行為信息到代碼中。

Aspects 模塊提供了與 AspectJ 的集成,這是一個(gè)功能強(qiáng)大且成熟的面向切面編程(AOP)框架。

Instrumentation 模塊在一定的應(yīng)用服務(wù)器中提供了類 instrumentation 的支持和類加載器的實(shí)現(xiàn)。

Messaging 模塊為 STOMP 提供了支持作為在應(yīng)用程序中 WebSocket 子協(xié)議的使用。它也支持一個(gè)注解編程模型,它是為了選路和處理來自 WebSocket 客戶端的 STOMP 信息。

測試模塊支持對具有 JUnit 或 TestNG 框架的 Spring 組件的測試

4.spring優(yōu)點(diǎn)

  • 方便解耦,簡化開發(fā)

Spring 就是一個(gè)大工廠,可以將所有對象的創(chuàng)建和依賴關(guān)系的維護(hù)交給 Spring 管理

  • 方便集成各種優(yōu)秀框架

Spring 不排斥各種優(yōu)秀的開源框架,其內(nèi)部提供了對各種優(yōu)秀框架(如 Struts2、Hibernate、MyBatis 等)的直接支持

  • 降低 Java EE API 的使用難度

Spring 對 Java EE 開發(fā)中非常難用的一些 API(JDBC、JavaMail、遠(yuǎn)程調(diào)用等)都提供了封裝,使這些 API 應(yīng)用的難度大大降低

  • 方便程序的測試

Spring 支持 JUnit4,可以通過注解方便地測試 Spring 程序

  • AOP 編程的支持

Spring 提供面向切面編程,可以方便地實(shí)現(xiàn)對程序進(jìn)行權(quán)限攔截和運(yùn)行監(jiān)控等功能

  • 聲明式事務(wù)的支持

只需要通過配置就可以完成對事務(wù)的管理,而無須手動編程。

5.spring學(xué)習(xí)路線

Spring概述與核心概念學(xué)習(xí) -- Spring入門(一),Spring入門,spring,java,后端

二、入門spring

1.核心概念

  1. 依賴注入(DI
  • Spring 最認(rèn)同的技術(shù)是控制反轉(zhuǎn)的依賴注入(DI)模式??刂品崔D(zhuǎn)(IoC)是一個(gè)通用的概念,它可以用許多不同的方式去表達(dá),依賴注入僅僅是控制反轉(zhuǎn)的一個(gè)具體的例子。

  • 當(dāng)編寫一個(gè)復(fù)雜的 Java 應(yīng)用程序時(shí),應(yīng)用程序類應(yīng)該盡可能的獨(dú)立于其他的 Java 類來增加這些類可重用可能性,當(dāng)進(jìn)行單元測試時(shí),可以使它們獨(dú)立于其他類進(jìn)行測試。依賴注入(或者有時(shí)被稱為配線)有助于將這些類粘合在一起,并且在同一時(shí)間讓它們保持獨(dú)立。

  • 到底什么是依賴注入?讓我們將這兩個(gè)詞分開來看一看。這里將依賴關(guān)系部分轉(zhuǎn)化為兩個(gè)類之間的關(guān)聯(lián)。例如,類 A 依賴于類 B?,F(xiàn)在,讓我們看一看第二部分,注入。所有這一切都意味著類 B 將通過 IoC 被注入到類 A 中。

  • 依賴注入可以以向構(gòu)造函數(shù)傳遞參數(shù)的方式發(fā)生,或者通過使用 setter 方法 post-construction。由于依賴注入是 Spring 框架的核心部分,所以我將在一個(gè)單獨(dú)的章節(jié)中利用很好的例子去解釋這一概念。

2.面向切面的程序設(shè)計(jì)(AOP):

  • Spring 框架的一個(gè)關(guān)鍵組件是面向切面的程序設(shè)計(jì)(AOP)框架。一個(gè)程序中跨越多個(gè)點(diǎn)的功能被稱為橫切關(guān)注點(diǎn),這些橫切關(guān)注點(diǎn)在概念上獨(dú)立于應(yīng)用程序的業(yè)務(wù)邏輯。有各種各樣常見的很好的關(guān)于方面的例子,比如日志記錄、聲明性事務(wù)、安全性,和緩存等等。

  • 在 OOP 中模塊化的關(guān)鍵單元是類,而在 AOP 中模塊化的關(guān)鍵單元是方面。AOP 幫助你將橫切關(guān)注點(diǎn)從它們所影響的對象中分離出來,然而依賴注入幫助你將你的應(yīng)用程序?qū)ο髲谋舜酥蟹蛛x出來。

  • Spring 框架的 AOP 模塊提供了面向方面的程序設(shè)計(jì)實(shí)現(xiàn),可以定義諸如方法攔截器和切入點(diǎn)等,從而使實(shí)現(xiàn)功能的代碼徹底的解耦出來。使用源碼級的元數(shù)據(jù),可以用類似于 .Net 屬性的方式合并行為信息到代碼中。我將在一個(gè)獨(dú)立的章節(jié)中討論更多關(guān)于 Spring AOP 的概念。

  1. Spring IoC 容器
  • Spring 容器是 Spring 框架的核心。容器將創(chuàng)建對象,把它們連接在一起,配置它們,并管理他們的整個(gè)生命周期從創(chuàng)建到銷毀。Spring 容器使用依賴注入(DI)來管理組成一個(gè)應(yīng)用程序的組件。這些對象被稱為 Spring Beans

  • 通過閱讀配置元數(shù)據(jù)提供的指令,容器知道對哪些對象進(jìn)行實(shí)例化,配置和組裝。配置元數(shù)據(jù)可以通過 XML,Java 注釋或 Java 代碼來表示。下圖是 Spring 如何工作的高級視圖。 Spring IoC 容器利用 Java 的 POJO 類和配置元數(shù)據(jù)來生成完全配置和可執(zhí)行的系統(tǒng)或應(yīng)用程序

Spring概述與核心概念學(xué)習(xí) -- Spring入門(一),Spring入門,spring,java,后端

  • IOC 容器具有依賴注入功能的容器,它可以創(chuàng)建對象,IOC 容器負(fù)責(zé)實(shí)例化、定位、配置應(yīng)用程序中的對象及建立這些對象間的依賴。通常new一個(gè)實(shí)例,控制權(quán)由程序員控制,而"控制反轉(zhuǎn)"是指new實(shí)例工作不由程序員來做而是交給Spring容器來做。在Spring中BeanFactory是IOC容器的實(shí)際代表者。

  • Spring 提供了以下兩種不同類型的容器。

序號 容器 & 描述
1 Spring BeanFactory 容器 :它是最簡單的容器,給 DI 提供了基本的支持,它用 org.springframework.beans.factory.BeanFactory 接口來定義。BeanFactory 或者相關(guān)的接口,如 BeanFactoryAware,InitializingBean,DisposableBean,在 Spring 中仍然存在具有大量的與 Spring 整合的第三方框架的反向兼容性的目的。
2 Spring ApplicationContext 容器 :該容器添加了更多的企業(yè)特定的功能,例如從一個(gè)屬性文件中解析文本信息的能力,發(fā)布應(yīng)用程序事件給感興趣的事件監(jiān)聽器的能力。該容器是由 org.springframework.context.ApplicationContext 接口定義。

ApplicationContext 容器包括 BeanFactory 容器的所有功能,所以通常不建議使用BeanFactory。BeanFactory 仍然可以用于輕量級的應(yīng)用程序,如移動設(shè)備或基于 applet 的應(yīng)用程序,其中它的數(shù)據(jù)量和速度是顯著。

  1. Spring Bean 定義
  • 被稱作 bean 的對象是構(gòu)成應(yīng)用程序的支柱也是由 Spring IoC 容器管理的。bean 是一個(gè)被實(shí)例化,組裝,并通過 Spring IoC 容器所管理的對象。這些 bean 是由用容器提供的配置元數(shù)據(jù)創(chuàng)建的,例如,已經(jīng)在先前章節(jié)看到的,在 XML 的表單中的 定義。

  • bean 定義包含稱為配置元數(shù)據(jù)的信息,下述容器也需要知道配置元數(shù)據(jù):

    • 如何創(chuàng)建一個(gè) bean

    • bean 的生命周期的詳細(xì)信息

    • bean 的依賴關(guān)系

上述所有的配置元數(shù)據(jù)轉(zhuǎn)換成一組構(gòu)成每個(gè) bean 定義的下列屬性。

屬性 描述
class 這個(gè)屬性是強(qiáng)制性的,并且指定用來創(chuàng)建 bean 的 bean 類。
name 這個(gè)屬性指定唯一的 bean 標(biāo)識符。在基于 XML 的配置元數(shù)據(jù)中,你可以使用 ID 和/或 name 屬性來指定 bean 標(biāo)識符。
scope 這個(gè)屬性指定由特定的 bean 定義創(chuàng)建的對象的作用域,它將會在 bean 作用域的章節(jié)中進(jìn)行討論。
constructor-arg 它是用來注入依賴關(guān)系的,并會在接下來的章節(jié)中進(jìn)行討論。
properties 它是用來注入依賴關(guān)系的,并會在接下來的章節(jié)中進(jìn)行討論。
autowiring mode 它是用來注入依賴關(guān)系的,并會在接下來的章節(jié)中進(jìn)行討論。
lazy-initialization mode 延遲初始化的 bean 告訴 IoC 容器在它第一次被請求時(shí),而不是在啟動時(shí)去創(chuàng)建一個(gè) bean 實(shí)例。
initialization 方法 在 bean 的所有必需的屬性被容器設(shè)置之后,調(diào)用回調(diào)方法。它將會在 bean 的生命周期章節(jié)中進(jìn)行討論。
destruction 方法 當(dāng)包含該 bean 的容器被銷毀時(shí),使用回調(diào)方法。它將會在 bean 的生命周期章節(jié)中進(jìn)行討論。
  • Bean 與 Spring 容器的關(guān)系

Spring概述與核心概念學(xué)習(xí) -- Spring入門(一),Spring入門,spring,java,后端## 5.spring三層架構(gòu)

A 表現(xiàn)層   web層    MVC是表現(xiàn)層的一個(gè)設(shè)計(jì)模型 

B 業(yè)務(wù)層  service層

C 持久層  dao層

2.IOC入門案例

  1. 入門案例思路分析

Spring概述與核心概念學(xué)習(xí) -- Spring入門(一),Spring入門,spring,java,后端

  1. 創(chuàng)建maven模塊

Spring概述與核心概念學(xué)習(xí) -- Spring入門(一),Spring入門,spring,java,后端

  1. 編寫接口和Dao實(shí)現(xiàn)類(此時(shí)無spring環(huán)境,純JAVA開發(fā))
  • 模塊代碼結(jié)構(gòu)
    Spring概述與核心概念學(xué)習(xí) -- Spring入門(一),Spring入門,spring,java,后端

  • BookDao

public interface BookDao {
    public void save();
}

  • BookDaoImpl
public class BookDaoImpl implements BookDao {
    public void save() {
        System.out.println("book dao save ...");
    }
}

  • BookService
public interface BookService {
    public void save();
}
  • BookServiceImpl
public class BookServiceImpl implements BookService {
    private BookDao bookDao = new BookDaoImpl();

    public void save() {
        System.out.println("book service save ...");
        bookDao.save();
    }
}
  • Main
public class Main {
    public static void main(String[] args) {
        BookService bookService = new BookServiceImpl();
        bookService.save();
    }
}
  • Main類運(yùn)行結(jié)果

Spring概述與核心概念學(xué)習(xí) -- Spring入門(一),Spring入門,spring,java,后端

  1. 示例代碼解析
  • 首先寫了兩個(gè)數(shù)據(jù)層接口 BookDao 和 BookService,兩個(gè)接口中都定義了save()方法
  • 然后寫了兩個(gè)數(shù)據(jù)層接口的實(shí)現(xiàn)類 BookDaoImpl 和 BookServiceImpl,分別實(shí)現(xiàn)了save() 方法,方法里都要一條輸出語句,但是兩個(gè)實(shí)現(xiàn)類save方法打印的內(nèi)容不同
  • 其中 BookServiceImpl 類中還通過new創(chuàng)建對象的方式調(diào)用了 BookDaoImpl的save方法
  • 最后在Main類中通過new創(chuàng)建對象的方式調(diào)用了BookServiceImpl的save方法將兩個(gè)save()方法中的語句打印了出來
  1. 在pom.xml中導(dǎo)入spring坐標(biāo)spring-context
 <dependencies>
        <!--spring坐標(biāo)-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.21.RELEASE</version>
        </dependency>
    </dependencies>

  1. 創(chuàng)建spring核心配置文件applicationContext.xml

resources 目錄右鍵 --> new --> XML Configuration File --> Spring Config(導(dǎo)入spring坐標(biāo)后才有對應(yīng)選項(xiàng))

Spring概述與核心概念學(xué)習(xí) -- Spring入門(一),Spring入門,spring,java,后端

  1. 配置Bean(如下)
<?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">

       <!--1.導(dǎo)入spring的坐標(biāo)spring-context,對應(yīng)版本是5.2.10.RELEASE-->

       <!--2.配置bean-->
       <!--bean標(biāo)簽標(biāo)示配置bean
       id屬性標(biāo)示給bean起名字
       class屬性表示給bean定義類型-->
       <bean id="bookDao" class="org.example.dao.impl.BookDaoImpl"/>

       <bean id="bookService" class="org.example.service.impl.BookServiceImpl"/>
               
</beans>
  1. 在org.example下新建一個(gè)類Main2
public class Main2 {
    public static void main(String[] args) {
        //3.獲取IoC容器
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        //4.獲取bean(根據(jù)bean配置id獲?。?/span>
        //左邊是對象,右邊是接口,所以要強(qiáng)轉(zhuǎn)類型
        BookDao bookDao = (BookDao) ctx.getBean("bookDao");
        bookDao.save();

        BookService bookService = (BookService) ctx.getBean("bookService");
        bookService.save();
    }
}
  • 程序運(yùn)行結(jié)果(通過spring創(chuàng)建對象而不是通過new創(chuàng)建對象)

Spring概述與核心概念學(xué)習(xí) -- Spring入門(一),Spring入門,spring,java,后端

  1. 總結(jié) :spring程序的開發(fā)步驟

Spring概述與核心概念學(xué)習(xí) -- Spring入門(一),Spring入門,spring,java,后端

3.DI入門案例

  1. 刪除BookServiceImpl類中通過new方式創(chuàng)建對象的代碼,并提供對應(yīng)的setter方法
package org.example.service.impl;

import org.example.dao.BookDao;
import org.example.service.BookService;

public class BookServiceImpl implements BookService {
    //5.刪除業(yè)務(wù)層中使用new的方式創(chuàng)建的dao對象
    private BookDao bookDao;
//    private BookDao bookDao = new BookDaoImpl();

    public void save() {
        System.out.println("book service save ...");
        bookDao.save();
    }
    //    6.提供對應(yīng)的set方法
    public void setBookDao(BookDao bookDao) {
        this.bookDao = bookDao;
    }
}

  1. 在全局配置文件applicationContext.xml文件中將BookDao注入到BookService中
<?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">

       <!--1.導(dǎo)入spring的坐標(biāo)spring-context,對應(yīng)版本是5.2.10.RELEASE-->

       <!--2.配置bean-->
       <!--bean標(biāo)簽標(biāo)示配置bean
       id屬性標(biāo)示給bean起名字
       class屬性表示給bean定義類型-->
       <bean id="bookDao" class="org.example.dao.impl.BookDaoImpl"/>

       <bean id="bookService" class="org.example.service.impl.BookServiceImpl">
       <!--7.配置server與dao的關(guān)系-->
       <!--property標(biāo)簽表示配置當(dāng)前bean的屬性
       name屬性表示配置哪一個(gè)具體的屬性
       ref屬性表示參照哪一個(gè)bean-->
       <property name="bookDao" ref="bookDao"/>
       </bean>

</beans>

  1. 運(yùn)行結(jié)果

Spring概述與核心概念學(xué)習(xí) -- Spring入門(一),Spring入門,spring,java,后端

  1. 注意事項(xiàng)

name 的值是類的屬性值,ref的值是id值

Spring概述與核心概念學(xué)習(xí) -- Spring入門(一),Spring入門,spring,java,后端

4.bean的配置

  1. bean的基礎(chǔ)配置

Spring概述與核心概念學(xué)習(xí) -- Spring入門(一),Spring入門,spring,java,后端

  1. bean的別名設(shè)置

Spring概述與核心概念學(xué)習(xí) -- Spring入門(一),Spring入門,spring,java,后端

  1. 控制bean的作用范圍

Spring概述與核心概念學(xué)習(xí) -- Spring入門(一),Spring入門,spring,java,后端

5.IOC容器相關(guān)

  1. 創(chuàng)建容器

Spring概述與核心概念學(xué)習(xí) -- Spring入門(一),Spring入門,spring,java,后端

  1. 獲取bean的方式

Spring概述與核心概念學(xué)習(xí) -- Spring入門(一),Spring入門,spring,java,后端

  1. 容器類層次結(jié)構(gòu)

(BeanFactory接口創(chuàng)建完畢后,所有的bean均為延遲加載)

Spring概述與核心概念學(xué)習(xí) -- Spring入門(一),Spring入門,spring,java,后端

三、數(shù)據(jù)源對象管理

1. 數(shù)據(jù)源對象管理入門案例

1. 導(dǎo)入數(shù)據(jù)源坐標(biāo)(以druid數(shù)據(jù)源為例)

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.16</version>
        </dependency>

2. 在核心配置文件中配置管理數(shù)據(jù)源對象(由于第三方技術(shù)已經(jīng)寫好,注入方式以及具體屬性名需要查

<bean class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/spring_db"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
    </bean>

3. 創(chuàng)建編寫模擬配置類App及其運(yùn)行結(jié)果

public class App {
    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        DataSource dataSource = (DataSource) ctx.getBean("dataSource");
        System.out.println(dataSource);
        
    }
}

Spring概述與核心概念學(xué)習(xí) -- Spring入門(一),Spring入門,spring,java,后端

2. 加載properties配置文件

1. 在resources目錄下創(chuàng)建jdbc.properties文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/spring_db
jdbc.username=root
jdbc.password=root

2. 在核心配置類中開啟context命名空間

Spring概述與核心概念學(xué)習(xí) -- Spring入門(一),Spring入門,spring,java,后端

3. 使用context空間加載properties文件

<?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:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd
            ">

<!--    1.開啟context命名空間-->
<!--    2.使用context空間加載properties文件-->
<!--    屬性占位符,location:加載的文件-->
    <context:property-placeholder location="jdbc.properties" system-properties-mode="NEVER"/>
<!--    3.使用屬性占位符${}讀取properties文件中的屬性-->
<!--    說明:idea自動識別${}加載的屬性值,需要手工點(diǎn)擊才可以查閱原始書寫格式-->
    <bean class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

    <bean id="bookDao" class="org.example.dao.impl.BookDaoImpl">
        <property name="name" value="${jdbc.driver}"/>
    </bean>

</beans>

4. 將綁定好的properties屬性注入到bookdao中,通過bookdao中的save方法輸出

public interface BookDao {
    public void save();
}

public class BookDaoImpl implements BookDao {
    private String name;

    public void setName(String name) {
        this.name = name;
    }

    public void save() {
        System.out.println("book dao save ..." + name);
    }
}

5. 模擬測試類及輸出結(jié)果

Spring概述與核心概念學(xué)習(xí) -- Spring入門(一),Spring入門,spring,java,后端
6. 小結(jié)和拓展

Spring概述與核心概念學(xué)習(xí) -- Spring入門(一),Spring入門,spring,java,后端
Spring概述與核心概念學(xué)習(xí) -- Spring入門(一),Spring入門,spring,java,后端

總結(jié)

歡迎各位留言交流以及批評指正,如果文章對您有幫助或者覺得作者寫的還不錯(cuò)可以點(diǎn)一下關(guān)注,點(diǎn)贊,收藏支持一下。
(博客的參考源碼可以在我主頁的資源里找到,如果在學(xué)習(xí)的過程中有什么疑問歡迎大家在評論區(qū)向我提出)文章來源地址http://www.zghlxwxcb.cn/news/detail-600803.html

到了這里,關(guān)于Spring概述與核心概念學(xué)習(xí) -- Spring入門(一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Spring專題】Spring之底層架構(gòu)核心概念解析

    【Spring專題】Spring之底層架構(gòu)核心概念解析

    本節(jié)課的內(nèi)容,是后續(xù)看Spring源碼所必備的概念、類精講,防止后續(xù)看源碼的過程中,遇到不會的、看不懂的還得單獨(dú)跳出來學(xué)習(xí)。所以,大家好好理解一下這些概念,可以大大地幫助后學(xué)源碼閱讀。 另外還有一點(diǎn)需要 特別聲明 : 接口的作用,有時(shí)候是用來約束、規(guī)范行為

    2024年02月13日
    瀏覽(23)
  • Spring-底層架構(gòu)核心概念

    BeanDefinition BeanDefinition表示Bean定義,有很多屬性用來描述Bean的特點(diǎn): class,表示Bean類型 scope,表示Bean作用域,單例或原型等 lazyInit:表示Bean是否是懶加載 initMethodName:表示Bean初始化時(shí)要執(zhí)行的方法 destroyMethodName:表示Bean銷毀時(shí)要執(zhí)行的方法 還有很多... 定義Bean的方式主要

    2024年02月08日
    瀏覽(24)
  • Spring底層架構(gòu)核心概念

    Spring底層架構(gòu)核心概念

    BeanDefinition表示Bean定義,BeanDefinition中存在很多屬性用來描述一個(gè)Bean的特點(diǎn)。比如: class,表示Bean類型 scope,表示Bean作用域,單例或原型等 lazyInit:表示Bean是否是懶加載 initMethodName:表示Bean初始化時(shí)要執(zhí)行的方法 destroyMethodName:表示Bean銷毀時(shí)要執(zhí)行的方法 還有很多… 在

    2024年02月07日
    瀏覽(25)
  • Spring源碼系列:核心概念解析

    Spring源碼系列:核心概念解析

    本文旨在為讀者解析Spring源碼中的關(guān)鍵類,以便讀者在深入閱讀源碼時(shí),能夠了解關(guān)鍵類的作用和用途。在閱讀Spring源碼時(shí),經(jīng)常會遇到一些不熟悉的概念,了解關(guān)鍵類的作用可以幫助讀者更好地理解這些概念。 BeanDefinition是Spring框架中的一個(gè)重要概念,它定義了一個(gè)Bean的基

    2023年04月20日
    瀏覽(26)
  • Spring 核心概念之一 IoC

    歡迎來到本篇文章!通過上一篇什么是 Spring?為什么學(xué)它?的學(xué)習(xí),我們知道了 Spring 的基本概念,知道什么是 Spring,以及為什么學(xué)習(xí) Spring。 今天,這篇就來說說 Spring 中的核心概念之一 IoC。 IoC 這個(gè)概念對于初學(xué)者來說還真不是很好理解,我就是那個(gè)理解不了的初學(xué)者。

    2024年02月07日
    瀏覽(19)
  • “從零開始學(xué)習(xí)Spring Boot:快速搭建Java后端開發(fā)環(huán)境“

    標(biāo)題:從零開始學(xué)習(xí)Spring Boot:快速搭建Java后端開發(fā)環(huán)境 摘要:本文將介紹如何從零開始學(xué)習(xí)Spring Boot,并詳細(xì)講解如何快速搭建Java后端開發(fā)環(huán)境。通過本文的指導(dǎo),您將能夠快速搭建一個(gè)基于Spring Boot的Java后端開發(fā)環(huán)境并開始編寫代碼。 正文: 一、準(zhǔn)備工作 在開始之前,

    2024年02月15日
    瀏覽(35)
  • 3、Spring之底層架構(gòu)核心概念解析

    3、Spring之底層架構(gòu)核心概念解析

    BeanDefinition表示Bean定義,BeanDefinition中存在很多屬性用來描述一個(gè)Bean的特點(diǎn)。比如: class,表示Bean類型 scope,表示Bean作用域,單例或原型等 lazyInit:表示Bean是否是懶加載 initMethodName:表示Bean初始化時(shí)要執(zhí)行的方法 destroyMethodName:表示Bean銷毀時(shí)要執(zhí)行的方法 還有很多... 在

    2024年02月12日
    瀏覽(26)
  • 深入解析Spring基本概念和核心思想

    使用spring后,被spring管理的類,不需要再new。 要想類被spring管理,則需要通過bean的方式,把類引入到spirng的配置文件中。 Ioc容器 簡單的理解就是: 實(shí)現(xiàn)IoC思想,并提供對象創(chuàng)建,對象裝配以及對象生命周期管理的軟件就是Ioc容器 IoC理解 應(yīng)用程序無需主動new對象,而是描述

    2024年02月12日
    瀏覽(50)
  • 深入淺出 Spring:核心概念和基本用法詳解

    深入淺出 Spring:核心概念和基本用法詳解

    個(gè)人主頁:17_Kevin-CSDN博客 收錄專欄;《Java》 在 Java 企業(yè)級應(yīng)用開發(fā)中,Spring 框架已經(jīng)成為了事實(shí)上的標(biāo)準(zhǔn)。它提供了一種輕量級的解決方案,使得開發(fā)者能夠更輕松地構(gòu)建靈活、可擴(kuò)展的應(yīng)用程序。在本文中,我們將探討 Spring 框架的一些核心概念和基本用法,以此更好地

    2024年03月20日
    瀏覽(22)
  • 【Spring Security系列】一文帶你了解權(quán)限框架與Spring Security核心概念

    【Spring Security系列】一文帶你了解權(quán)限框架與Spring Security核心概念

    權(quán)限框架是軟件開發(fā)中用于管理 用戶權(quán)限和訪問控制 的工具。在企業(yè)或者我們畢設(shè)復(fù)雜的系統(tǒng)中,不同的用戶或角色需要擁有不同的訪問和操作權(quán)限,以確保系統(tǒng)的安全性和數(shù)據(jù)完整性。今天我們就討論一下Java中的安全框架! 在企業(yè)的開發(fā)中,Spring Security,Shiro都是比較流

    2024年04月16日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包