最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Java三十八篇:回顧Spring

2023-03-13 23:53 作者:小劉Java之路  | 我要投稿

大家好!我是小劉,Java程序員對spring家族在熟悉不過了,吃飯的家伙呀!

可以說是spring把Java推上了又一波Java高峰。

一、Spring介紹

在日常開發(fā)過程中經(jīng)常會提到三大框架(SSM)指的是Spring、SpringMVC、Mybatis。其中一個非常重要的框架就是Spring。Spring目前隸屬于皮沃托公司,Spring在剛剛出來的時候只有Spring Framework一款產(chǎn)品。我們習慣性的簡稱它為Spring,但是發(fā)展到現(xiàn)在Spring旗下已經(jīng)有非常非常多的框架了,例如:SpringBoot、SpringCloud、SpringData、SpringSecurity等等。但是我們還是習慣性成將Spring Framework成為Spring。

二、Spring到底是什么框架

Spring它并不想Mybatis專門去解決某一個層面的問題,它在項目成扮演的是一個管理者的角色,負責對我們的項目中的對象進行管理,包括創(chuàng)建、注入、代理等等。實現(xiàn)了一個解耦的目的。Spring在管理對象時會將對象存儲起來,所以Spring我們也可以將它看成一個容器。

Spring的能力

https://spring.io/projects/spring-boot ?官網(wǎng)

Spring的生態(tài)

覆蓋了:

web開發(fā)

數(shù)據(jù)訪問

安全控制

分布式

消息服務

移動開發(fā)

批處理

三、Spring的兩大核心能力

IOC (控制反轉(zhuǎn))

IoC?inversion of control 控制反轉(zhuǎn),對于依賴的管理由調(diào)用方轉(zhuǎn)移到Spring的容器中。

DI??dependency injection 依賴注入,強調(diào)屬性的注入。

IoC與DI是同一件事情的兩種描述方式

UserController ? -> ?UserService

Before userService是由UserController創(chuàng)建并管理

After ?userService是由Spring容器創(chuàng)建并管理


IOC

使用Spring首先要引入依賴,Spirng框架下有很多依賴。在使用maven下載依賴時,只需要通過頂端依賴spring-context開始就可以下載到其他所有的依賴。

準備工作:

新建maven普通java項目

在pom.xml中通過spring-context的坐標下載spring的相關依賴:

Spring容器類型:

容器的頂端是ApplicationContext,在它下面有三個常用的實現(xiàn)類。

ClassPathXmlApplicationContext:通過配置在classpath下的一個xml文件來完成容器初始化。

AnnotationConfigApplicationContext:通過掃描注解初始化容器

WebApplicationContext:在WEB環(huán)境下使用的Spring容器

FileSystemApplication:通過外部XML文件完成容器的初始化

配置版的IOC

初始化容器的API:

配置版的IOC是用過一個XML文件描述bean信息。

1.在項目的resources目錄下新建一個xml文件,名為applicationContext.xml,該文件就是spring的核心配置文件,Spring會解析該文件獲得必要信息,然后進行IOC的工作。

2.在applicationContext.xml中添加beans根標簽,并且在benas標簽中添加一個xml的schema約束(類似于DTD)。

3.通過配置創(chuàng)建對象

  • 通過無參構造創(chuàng)建對象(Spring默認的方式,也是最常用的方式)如下:

  • 選擇構造方法創(chuàng)建對象

當我們的類具備多種構造函數(shù)時,我們可以通過spring選擇某一個構造函數(shù)來完成對象的創(chuàng)建,具體的方式就是通過bean標簽下的constructor-arg標簽來完成配置。例如:

按照上述方式配置,最終spring會選擇雙參構造方法來完成對象的創(chuàng)建。

  • 通過工廠模式創(chuàng)建對象

首先通過一個bean標簽創(chuàng)建一個工廠對象(工廠類自己編寫)

通過bean標簽調(diào)用工廠對象的工廠方法來創(chuàng)建目標對象


  • 通過靜態(tài)工廠模式創(chuàng)建對象

通過bean標簽class的值為工廠的類路徑,再通過靜態(tài)工廠方法的方法名來完成對象的創(chuàng)建

4.設置對象的單例或非單例

通過spring創(chuàng)建對象時,可以選擇使用單例或者是非單例模式。spring默認情況是創(chuàng)建對象采用的是單例模式。

要配置單例或者多例需要使用bean標簽中的scope屬性。

scope屬性可選值:

singleton(默認):單例

prototype:多例

request:web環(huán)境中生效,在一次請求中無論你getBean多少次,獲取的對象都是同一個

session:web環(huán)境中生效,在一次會話中無論你geyBean多少次,獲取的對象都是同一個

image.png

5.通過配置完成依賴注入

  • 注入基本數(shù)據(jù)類型

在需要注入屬性的對象的bean標簽下,通過property子標簽完成依賴注入,name表示需要注入值的屬性的名稱,value需要注入的值。

相對應的需要類中為屬性提供set方法,因為配置方式進行依賴注入是同set方法完成賦值的。

image.png
  • 注入對象

在需要注入屬性的對象的bean標簽下,通過property子標簽完成依賴注入,name表示需要注入值的屬性的名稱,ref表示要注入的對象在spring容器中的ID。

同樣的在被注入的類中需要定義相應的屬性并提供set方法

image.png
  • 注入集合

  • 注入鍵值對

  • 注入Properties

注解版的IOC

注解版的IOC所使用的容器為:AnnotationConifgApplicationContext

使用注解創(chuàng)建對象:

使用注解創(chuàng)建對象可選的注解共4個:@Component、@Controller、@Service、@Repository

@Component:通用注解,可以添加在任意類的上面用于創(chuàng)建該類的對象。

@Controller:專用于創(chuàng)建控制層的對象

@Service:專用于創(chuàng)建業(yè)務層的對象

@Repository:專用于創(chuàng)建數(shù)據(jù)層的對象

使用注解完成對象創(chuàng)建的基本步驟

使用注解完成依賴注入共兩個注解@Resource和@Autowired

@Resource:(java 提供的注解)在注入對象時優(yōu)先從容器中注入一個和屬性名稱相同的對象。如果和這個屬性名稱相同的對象和屬性類型不匹配將會報錯。如果在容器中沒有找到和這個屬性名稱相同的對象,再通過類型進行注入。ByName->ByType

@Autowired:(spring提供的注解)注入對象時優(yōu)先通過類型去查找,如果同一個類型的對象在容器中有多個,它會在通過屬性名稱完成查找,如果在這個多個對象中有和它的屬性名稱相同的對象,就將該對象注入過去。如果這些對象和屬性名稱都不匹配,就拋出異常。


Java三十八篇:回顧Spring的評論 (共 條)

分享到微博請遵守國家法律
维西| 宁河县| 东明县| 页游| 河南省| 如东县| 岐山县| 班玛县| 乌苏市| 湛江市| 偃师市| 越西县| 新建县| 铁岭市| 昌吉市| 大余县| 高清| 汪清县| 江川县| 卢氏县| 扎囊县| 连城县| 天祝| 张家川| 冕宁县| 新疆| 霍州市| 宁明县| 桃园县| 抚松县| 老河口市| 博客| 岳阳市| 阿克苏市| 蓝山县| 青海省| 康保县| 行唐县| 通化市| 冕宁县| 彭泽县|