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