一文掌握Spring的創(chuàng)建與使用
Spring的創(chuàng)建
Spring的創(chuàng)建分為3個(gè)步驟:
1、創(chuàng)建一個(gè)Maven項(xiàng)目
2、添加Spring框架支持(spring-context,spring-beans)
3、添加啟動(dòng)類(lèi)
1、創(chuàng)建Maven項(xiàng)目
創(chuàng)建完成后進(jìn)行spring框架的添加
2、添加Spring框架支持(spring-context,spring-beans)
在pom.xml中添加Spring的框架支持:
打開(kāi)Maven中央倉(cāng)庫(kù):搜索Spring:
點(diǎn)開(kāi)Spring Context選擇一個(gè)5.x版本
復(fù)制依賴(lài)到pom.xml中
下載完就不再爆紅
然后我們引入spring-beans依賴(lài):(同樣的步驟)
這是引入的依賴(lài):
<dependencies> <!-- https://mvnrepository.com/artifact/org.springframework/spring-context --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.3.20</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>5.3.20</version> </dependency> </dependencies>
其中spring-context是spring上下文,spring-beans是管理對(duì)象的模塊。
這一塊出現(xiàn)這樣就說(shuō)明都引入成功了。
3、添加啟動(dòng)類(lèi)
啟動(dòng)類(lèi)就和平時(shí)創(chuàng)建一個(gè)普通類(lèi)一樣:
public class App { public static void main(String[] args) { System.out.println("Hello Spring"); } }
啟動(dòng)類(lèi)用來(lái)測(cè)試后面的代碼。
至此一個(gè)Spring項(xiàng)目就創(chuàng)建完成了。再來(lái)看看怎么使用Spring項(xiàng)目
Spring的使用 (Bean對(duì)象的存取及使用)
Bean對(duì)象的存儲(chǔ)
1、添加Spring的配置文件
在resources目錄下創(chuàng)建spring-config.xml文件:
添加下述內(nèi)容:
<?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"> </beans>
建議把這個(gè)配置保存在碼云,用的時(shí)候直接去復(fù)制即可
2、創(chuàng)建Bean對(duì)象
新建一個(gè)類(lèi)即可。
3、將Bean注冊(cè)到容器中(在配置文件中進(jìn)行配置)
<bean id="user" class="com.spring.demo.Bean.User"></bean>
Bean對(duì)象的獲取
Bean對(duì)象的獲取要2個(gè)步驟:
1、得到Spring上下文(對(duì)象都交給Spring了,所以獲取的時(shí)候要下獲取到Spring的上下文)
2、通過(guò)Spring上下文獲取指定Bean對(duì)象
1、得到Spring上下文(對(duì)象都交給Spring了,所以獲取的時(shí)候要下獲取到Spring的上下文)
使用ApplicationContext來(lái)獲取對(duì)象
1、得到Spring上下文
//獲取Spring上下文 ApplicationContext context=new ClassPathXmlApplicationContext("spring-config.xml");
2、獲取指定Bean對(duì)象
//獲取指定Bean對(duì)象 User user = (User)context.getBean("user");
注意:
這是這個(gè)對(duì)象就可以進(jìn)行使用了。
這樣我們就可以不用new對(duì)象而能夠使用對(duì)象了。
除了使用 ApplicationContext來(lái)獲取對(duì)象外,我們還可以使用BeanFactory來(lái)獲取對(duì)象
使用BeanFactory來(lái)獲取對(duì)象
public static void main(String[] args) { //獲取Spring上下文 BeanFactory beanFactory=new XmlBeanFactory(new ClassPathResource("spring-config.xml")); //獲取Bean對(duì)象 User user= (User) beanFactory.getBean("user"); //使用bean user.sayHi(); }
寫(xiě)到這里就有個(gè)面試題了:
ApplicationContext和BeanFactory的區(qū)別是什么
相同點(diǎn):都可以從IoC容器當(dāng)中獲取bean。
不同點(diǎn) :
從繼承關(guān)系和功能方面:ApplicationContext繼承于BeanFactory。BeanFactory只提供了最基礎(chǔ)的訪(fǎng)問(wèn)bean的方法,而ApplicationContext除了擁有BeanFactory以外,還擁有一些其他的機(jī)制,例如:支持國(guó)際化,資源訪(fǎng)問(wèn),事件傳播等等
從性能方面: ApplicationContext 是?次性加載并初始化所有的 Bean 對(duì)象,?BeanFactory 是需要那個(gè)才去加載那個(gè),因此更加輕量(ApplicationContext采用的是"餓加載"的方式來(lái)進(jìn)行加載的。而B(niǎo)eanFactory采用的是"懶加載"的方式來(lái)進(jìn)行加載的。)
關(guān)于getBean()的更多用法
1、根據(jù)bean的id獲取bean
User user = (User)context.getBean("user");
user是該bean的id,且這個(gè)id只能存在一個(gè),Spring容器中不能存在多個(gè)名稱(chēng)為user的bean
2、根據(jù)bean的類(lèi)型獲取bean
User user1 = context.getBean(User.class);
這種類(lèi)型的好處是不用進(jìn)行類(lèi)型的強(qiáng)轉(zhuǎn),但是這個(gè)在出現(xiàn)容器中同一個(gè)類(lèi)有多個(gè)對(duì)象注入的時(shí)候就會(huì)報(bào)錯(cuò)。因?yàn)椴荒艽_定是哪個(gè)對(duì)象。
3、根據(jù)bean的id和bean的類(lèi)型獲取bean(推薦使用)
User user2 = context.getBean("user",User.class);
這種寫(xiě)法既可以不用強(qiáng)制類(lèi)型轉(zhuǎn)換,也能夠準(zhǔn)確的獲取到指定的bean對(duì)象,推薦使用這種方式。
以上就是一文掌握Spring的創(chuàng)建與使用的詳細(xì)內(nèi)容,更多關(guān)于Spring的創(chuàng)建與使用的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Java之Spring Boot創(chuàng)建和使用
- 詳解Spring Boot 使用Java代碼創(chuàng)建Bean并注冊(cè)到Spring中
- 如何使用IDEA2022.1?創(chuàng)建Spring?Boot項(xiàng)目
- 使用SpringDataJpa創(chuàng)建中間表
- IDEA使用SpringAssistant插件創(chuàng)建SpringCloud項(xiàng)目
- SpringBoot創(chuàng)建并簡(jiǎn)單使用的實(shí)現(xiàn)
- 解決IDEA使用Spring Initializr創(chuàng)建項(xiàng)目時(shí)無(wú)法連接到https://start.spring.io的問(wèn)題
相關(guān)文章
SpringBoot中@PathVariable、@RequestParam和@RequestBody的區(qū)別和使用詳解
這篇文章主要介紹了SpringBoot中@PathVariable、@RequestParam和@RequestBody的區(qū)別和使用詳解,@PathVariable 映射 URL 綁定的占位符,通過(guò)@RequestMapping注解中的{}占位符來(lái)標(biāo)識(shí)URL中的變量部分,需要的朋友可以參考下2024-01-01Spring Cloud Feign組成配置過(guò)程解析
這篇文章主要介紹了Spring Cloud Feign組成配置過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03Feign遠(yuǎn)程調(diào)用傳遞對(duì)象參數(shù)并返回自定義分頁(yè)數(shù)據(jù)的過(guò)程解析
這篇文章主要介紹了Feign遠(yuǎn)程調(diào)用傳遞對(duì)象參數(shù)并返回自定義分頁(yè)數(shù)據(jù)的過(guò)程解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03SpringCloud gateway+zookeeper實(shí)現(xiàn)網(wǎng)關(guān)路由的詳細(xì)搭建
這篇文章主要介紹了SpringCloud gateway+zookeeper實(shí)現(xiàn)網(wǎng)關(guān)路由,本文通過(guò)圖文實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08Java concurrency之AtomicReference原子類(lèi)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
AtomicReference是作用是對(duì)"對(duì)象"進(jìn)行原子操作。這篇文章主要介紹了Java concurrency之AtomicReference原子類(lèi),需要的朋友可以參考下2017-06-06基于Nacos實(shí)現(xiàn)Spring Cloud Gateway實(shí)現(xiàn)動(dòng)態(tài)路由的方法
這篇文章主要介紹了基于Nacos實(shí)現(xiàn)Spring Cloud Gateway實(shí)現(xiàn)動(dòng)態(tài)路由的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06