【SSM面向CRUD編程專欄 1】Spring簡介 xml配置文件 依賴注入 數據注入

🛫更多ssm知識見SSM_面向CRUD編程專欄

🚕本博客總結自黑馬程序員的ssm框架視頻

🚒博主對于該知識尚在學習階段

🚄如果發現存在問題請毫不吝嗇的指出

🚀🚀扎哇太棗糕的博客主頁🚀🚀

目錄

1 Spring簡介

2 xml配置文件

3 依賴、數據注入問題


1 Spring簡介

? ? ? ? Spring是分層的Java SE/EE階段應用的full-stack輕量級開源框架,主要以兩個部分IOC??(Inverse Of Control 反轉控制)和AOP? (Aspect Oriented Programming 面向切面編程)為內核。所謂的full-stack就是說提供了web層的Spring MVC、DAO層的JDBC模板、業務層的事務管理等眾多的企業級應用技術,除此之外還能整合開源世界眾多著名的第三方框架和類庫,逐漸成為使用最多的Java EE企業應用開源框架。

? ? ? ? 了解完Spring是什么,接下來學習一下Spring的發展歷程,Spring框架的前身是IBM提出的EJB,2005年Spring之父羅德·約翰森(Rod Johnson)發表Expert One-on-One J2EE Development without EJB一書被認為是Spring框架的雛形,再后來經過幾年的發展就有了我們現在學習的Spring框架。

?從高斯林和約翰森兩位大佬的發型就能看出來,學Java必定是前途無量。

Spring體系結構

我們對Spring的學習是按照它的體系結構從下往上開始學習的

?Spring快速入門開發

學習Spring之前

????????在使用Spring之前想要在UserDaoDemo的main方法里調用UserDaoImple類中的save方法,就要先使用多態創建對象就是通過new創建,再使用創建出來的UserDao對象調用save方法。這樣做不好的地方就是:將創建對象寫死(固定)了,編碼過度耦合,代碼里面創建的是什么對象就只能用什么對象。

學習Spring之后

????????使用Spring就可以通過xml配置文件實現解耦合,通過xml配置文件的配置和getBean方法的配合就可以動態的修改創建對象,具體步驟如下:

目錄結構:

?第一步:通過maven導入spring-context對應的依賴坐標

第二步:編寫UserDao對應的接口和實現類?

?第三步:創建applicationContext.xml配置文件并配置id標識標識 UserDaoImpl類

第四步:在UserDemo中通過Spring的API獲得Bean并調用方法

控制端運行結果

紅色的是打印的日志信息而非報錯

2 xml配置文件

Bean標簽的配置

屬性:

id:Bean在Spring容器中的唯一標識,在一個xml配置文件內部所有Bean標識的命名不可與之重復

class:Bean的全限名,指定這個id標識所對應的Bean類。Spring框架底層利用反射通過這個全限名對應Bean類的無參構造器創建對象。

scope:指的是對象創建的模式,有以下五中取值

  • singleton:是scope屬性的默認值,相當于餓漢單例模式,也就是說Bean對象只在使用xml配置文件創建Spring客戶端對象的時候創建一次,之后使用getBean方法獲取Bean對象的時候返回的都是之前創建好的Bean對象。singleton一共就在Spring的核心文件被加載時創建一次一個Bean對象存儲在容器里,當應用卸載銷毀容器時對象隨之銷毀。
  • prototype:相當于多例設計模式,也就是說在每一次使用Spring客戶端對象的getBean方法時都會創建一個新的Bean對象并返回。prototype是使用幾次getBean方法就會創建幾個Bean對象,當對象長時間不用的時候就會被java的垃圾回收機器回收對象也就銷毀了。
  • request:web項目中,Spring創建一個Bean對象并將其存入到request域中
  • session:web項目中,Spring創建一個Bean對象并將其存入到session域中
  • global session:web項目中,應用于portlet環境中,如果沒有portlet環境的話就相當于session

init-method:指定Bean類中的初始化方法

destory-method:指定Bean類中的銷毀方法

import標簽

import標簽是用來將其他配置文件的配置內容加載到這個配置文件中?

?Bean實例化的三種方法:

  • 無參構造方法實例化(重點):無參構造方法其實就是我們上面講的那些知識點
  • 工廠靜態方法實例化:通過工廠中的靜態方法進行實例化,只需創建一個工廠類,類里面創建一個靜態方法,方法返回一個無參構造器創建的Bean對象,再設置xml文件即可

  • ?工廠實例方法實例化:通過工廠中的實例方法進行實例化,與工廠靜態方法的區別就是,用于返回一個無參構造器創建的Bean對象的方法是實例方法,xml配置文件也不一樣,要更加復雜些。

3 依賴、數據注入問題

引出問題:

? ? ? ? 現在有這么一個情況,除了上面已經有的dao層之外,新建一個業務層service。service層的結構和dao層相似,也是一個接口和實現類。目錄結構如下:

UserServiceImpl類和UserDaoImpl類也都通過xml配置文件的bean標簽進行配置。

?此時有一個需求,就是要在service層的UserServiceImpl類里的cast()方法中調用UserDaoImpl類的save()方法,實現思想就是在UserServiceImpl類里的cast()方法中使用之前UserDaoDemo的那一套進行調用UserDaoImpl類的save()方法

?在新建的UserController類中使用那一套調用UserServiceImpl類里的cast()方法

這么一來,就可以在Spring容器外部將Dao組裝到了Service?那么,有沒有一種方式,可以在Spring容器內部就將Dao組裝到了Service呢?有的,于是乎就出現了依賴注入。

依賴注入:

? ? ? ? 依賴注入(Dependency Injection)是Spring框架核心IOC(控制反轉)的具體實現。在編程的時候通過控制反轉就可以把對象的創建交給Spring 容器,IOC只是降低他們之間的依賴關系并不會消除依賴,service層仍會調用dao層的方法。那么,該如何將UserDao注入到UserService的內部呢?

依賴注入的兩種方式:

set方法注入

就相當于將userDao對象通過setUserDao方法當做一個參數直接傳給UserServiceImpl類中,當創建UserServiceImpl類的對象調用cast()方法時,cast()方法內部就會使用setUserDao方法傳過來的userDao對象調用save()方法

具體setUserDao方法參數的userDao對象是如何創建的,這就要到xml配置文件中設置了

xml配置文件的另一種配置方式的寫法,知道即可還是上面的<property>標簽的可讀性更加高

?通過set方法注入的方式,就可以在Spring容器內部時就將Dao組裝到了Service

?set方法注入的關鍵就是,xml配置文件<property>標簽將Dao組裝到了Service,并在再service層的實現方法上用set方法接收dao層的對象,并使用對象對dao層進行操作。

構造方法注入

創建一個有參構造器用于接收UserDao對象

使用<constructor-arg>標簽配置

?? set方法注入和構造器注入的方式其他都一樣,就是接收UserDao的載體set注入是私有屬性的setter方法、構造器注入是有參構造器,xml配置文件的標簽set注入是<property>、構造器注入是<constructor-arg>

set方式注入其他類型數據

????????以上兩種依賴注入的方式不只能用于注入對象,還可以用于注入普通數據類型、引用數據類型和集合數據類型,接下來就以set注入方式為例演示

普通數據類型

創建變量相應的setter方法

配置xml配置文件

?spring客戶端對象獲取Bean對象,并調用save方法

數組、集合、propetries

propetries是Java的一個類以鍵值對的形式存儲配置信息

setter方法

xml配置文件?

??spring客戶端對象獲取Bean對象,并調用save方法

總結(注入數據時配置文件的配置格式)

上圖傳作資源,如有用可自行下載:下載地址?

? ? ??

下一篇:【SSM面向CRUD編程專欄 2】Spring相關API 數據源(連接池)的配置 注解開發 整合junit?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535129.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535129.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535129.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【SSM面向CRUD編程專欄 2】Spring相關API 數據源(連接池)的配置 注解開發 整合junit

&#x1f6eb;更多ssm知識見SSM_面向CRUD編程專欄 &#x1f695;本博客總結自黑馬程序員的ssm框架視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客主頁&#x1f680;&#x1f680; 目…

【SSM面向CRUD編程專欄 4】 Spring集成web環境 SpringMVC初識

&#x1f6eb;更多ssm知識見SSM_面向CRUD編程專欄 &#x1f695;本博客總結自黑馬程序員的ssm框架視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客主頁&#x1f680;&#x1f680; ?…

IntelliJ IDEA里的項目搞崩了怎么辦,本地歷史版本回退拯救你崩潰的心靈

&#x1f4a5;寫在前面&#xff1a; 如果你還沒有讀過雨果的悲慘世界也沒有讀過余華的活著&#xff0c;那你可以看看我今天早上的經歷&#xff0c;如果不想聽我胡侃的話&#xff0c;直接進入正題&#xff1a; 目錄 本地歷史的強大 今天早上打開IntelliJ IDEA繼續ssm模塊的代碼練…

【SSM面向CRUD編程專欄 5】使用SpringMVC進行數據響應以及獲取請求數據

&#x1f6eb;更多ssm知識見SSM_面向CRUD編程專欄 &#x1f695;本博客總結自黑馬程序員的ssm框架視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客主頁&#x1f680;&#x1f680; 目…

【SSM面向CRUD編程專欄 6】springMVC攔截器、異常處理 jdbcTemplate

&#x1f6eb;更多ssm知識見SSM_面向CRUD編程專欄 &#x1f695;本博客總結自黑馬程序員的ssm框架視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客主頁&#x1f680;&#x1f680; 目…

【SSM面向CRUD編程專欄 7】springAop 事務控制

&#x1f6eb;更多ssm知識見SSM_面向CRUD編程專欄 &#x1f695;本博客總結自黑馬程序員的ssm框架視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客主頁&#x1f680;&#x1f680; 目…

【SSM面向CRUD編程專欄 8】一篇博客快速上手使用MyBatis進行CRUD

&#x1f6eb;更多ssm知識見SSM_面向CRUD編程專欄 &#x1f695;本博客總結自黑馬程序員的ssm框架視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客主頁&#x1f680;&#x1f680; 目…

【SSM面向CRUD編程專欄 9】SSM框架整合

&#x1f6eb;更多ssm知識見SSM_面向CRUD編程專欄 &#x1f695;本博客總結自黑馬程序員的ssm框架視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客主頁&#x1f680;&#x1f680; 目…

三萬字速通SSM框架入門知識點,快速上手CRUD

&#x1f6eb;更多ssm知識見SSM_面向CRUD編程專欄 &#x1f695;本博客總結自黑馬程序員的ssm框架視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客主頁&#x1f680;&#x1f680; 目…

無法在web.xml或使用此應用程序部署的jar文件中解析絕對uri:[http://java.sun.com/jsp/jstl/core]

問題簡介 本人是在進行一個ssm框架項目的編寫的時候&#xff0c;在數據庫中查詢到所有的商品信息并返回到頁面使用EL表達式進行展現&#xff0c;但是使用tomcat 9.0.58運行的時候報錯會出現以下報錯情況。 頁面報錯&#xff1a; 控制臺報錯&#xff1a; 解決方法 首先看看是不…

check the manual that corresponds to your MySQL server version for the right syntax to use near

首先判斷自己是在什么情況下報的錯&#xff0c;如果是MyBatis的SQL報錯的話&#xff0c;建議直接點擊目錄跳轉到MyBatis時SQL報錯&#xff0c;避免浪費時間。如果本文能夠對你有所幫助的話&#xff0c;還請在評論區多多支持 目錄 &#x1f37b;運行SQL語句、SQL文件等報錯 &…

MyBatis的逆向工程工具,自動生成數據庫對應的POJO實體類、mapper接口、增刪改查mapper.xml文件

下載MyBatis的逆向工程工具&#xff0c;并解壓縮到一個不包含中文字符的文件夾下&#xff0c;我直接放到了D盤下&#xff0c;下載地址&#xff1a;MyBatis逆向工程工具下載 如何使用MyBatis的逆向工程工具 下載之后使用idea在一個新窗口中打開&#xff0c;選中工具文件之后&am…

『收藏向 期末SSM課設救急』 教你從搭建到測試運行手擼一個SSM項目實戰,附帶源碼,前端頁面、解析和一般遇到的問題(排雷)

&#x1f6eb;ssm知識學習見SSM_面向CRUD編程專欄 &#x1f695;本項目來自動力節點的【米米商城】 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客主頁&#x1f680;&#x1f680; 項目…

【SpringBoot 2】(一)基礎知識了解學習

&#x1f6eb;更多知識總結見SpringBoot 2專欄 &#x1f695;本篇知識點總結自尚硅谷雷神的視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客主頁&#x1f680;&#x1f680; ? 目錄…

【SpringBoot 2】(二)快速入門案例HelloWorld

&#x1f6eb;更多知識總結見SpringBoot 2專欄 ( &#x1f695;本篇知識點總結自尚硅谷雷神的視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客主頁&#x1f680;&#x1f680; ? 目…

【SpringBoot 2】(三)SpringBoot相較于Spring的特點

&#x1f6eb;更多知識總結見SpringBoot 2專欄 &#x1f695;本篇知識點總結自尚硅谷雷神的視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客主頁&#x1f680;&#x1f680; ? 目錄…

井通swtc能不能漲到2元_買一支2塊到3塊之間的股票,買幾十萬股嗎?這樣操作效果怎么樣?...

有很多新股民有一種看法&#xff0c;認為高價股風險很大&#xff0c;那么可不可以買2到3元的低價股&#xff0c;是不是風險就很小&#xff0c;以后上漲的力度就會很大&#xff1f;這是很多股民都存在的一個誤區&#xff0c;也是很多股市的所謂高手的誤導&#xff0c;他們說&…

cad應用程序的組件中發生了未經處理的異常_什么是CAD/CAM?

與許多其他行業一樣&#xff0c;牙科技術的生產階段也越來越自動化。由于牙科實驗室工作的價格已成為治療計劃和治療的主要因素&#xff0c;因此自動化可以在西歐和美國等高薪地區實現更具競爭力的生產。現在&#xff0c;計算機技術的進步使高性價比的單件生產成為可能。近年來…

【SpringBoot 2】(四)詳析SpringBoot的常用注解

&#x1f6eb;更多知識總結見SpringBoot 2專欄 &#x1f695;本篇知識點總結自尚硅谷雷神的視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客首頁&#x1f680;&#x1f680; 目錄 向…

蘋果7手機嚴重卡頓_蘋果手機僅配備4GB運存都不會卡頓,安卓系統為何要更多內存?...

原標題&#xff1a;蘋果手機僅配備4GB運存都不會卡頓&#xff0c;安卓系統為何要更多內存&#xff1f;眾所周知&#xff0c;安卓系統歷經十余年的發展&#xff0c;目前最低的運行需求是8GB內存&#xff0c;如果是旗艦機的話還要標配12GB或更高。但是前幾天剛發布的iPhone12&…