Spring如何更簡(jiǎn)單的讀取和存儲(chǔ)對(duì)象
前言
上篇博客我們介紹了如何創(chuàng)建一個(gè)spring項(xiàng)目,并且如何的存、取對(duì)象,介紹了相關(guān)方法,那么本篇博客將接著上篇博客的內(nèi)容介紹如何更加簡(jiǎn)單的讀取和存儲(chǔ)對(duì)象。
??在 Spring 中想要更簡(jiǎn)單的存儲(chǔ)和讀取對(duì)象的核?是使?注解,也就是我們接下來(lái)要學(xué)習(xí) Spring 中的相關(guān)注解,來(lái)存儲(chǔ)和讀取 Bean 對(duì)象。
一、存儲(chǔ)Bean對(duì)象
1、之前我們存儲(chǔ)Bean時(shí),需要在spring-config中添加一行bean注冊(cè)內(nèi)容才行;如下圖:
而現(xiàn)在我們需要一個(gè)簡(jiǎn)單的注解即可完成;
二、配置掃描路徑
那么我們這里可以新建一個(gè)項(xiàng)目來(lái)演示,取名為spring-2;
1、首先依然是配置pom.xml文件,添加spring框架支持;
添加以下代碼;
<dependencies> <!-- https://mvnrepository.com/artifact/org.springframework/spring-context --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.3.24</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>5.3.24</version> </dependency> </dependencies>
2、在resources 目錄下新建一個(gè)文件,spring-config.xml;
添加以下配置代碼;
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:content="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 https://www.springframework.org/schema/context/spring-context.xsd"> <!-- 配置 Spring 掃描的根路徑(此根路徑下的所有 Spring 存對(duì)象的注解才能生效) --> <content:component-scan base-package="com"></content:component-scan> </beans>
注意注釋里面的內(nèi)容,base-package后面的路徑要正確;
三、添加注解存儲(chǔ) Bean 對(duì)象
1、類(lèi)注解:包含以下五種:@Controller(控制器)、@Service(服務(wù))、@Repository(倉(cāng)庫(kù))、@Component(組件)、@Configuration(配置)。
為什么需要五大類(lèi)注解?
在線演示五大注解添加存儲(chǔ) Bean 對(duì)象;
一、Controller
首先在com包下面新建一個(gè)類(lèi),這里我取的名字是"UserController"。
2、UserController里面的代碼;
package com; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.stereotype.Controller; @Controller public class UserController { public void sayHi(){ System.out.println("hello UserController"); } }
注意千萬(wàn)不要遺漏注解@Controller,否則會(huì)報(bào)錯(cuò)的;
3、在啟動(dòng)類(lèi)App中將對(duì)象讀取出來(lái);
ApplicationContext context= new ClassPathXmlApplicationContext("spring-config.xml"); UserController userController = context.getBean(UserController.class); userController.sayHi();
運(yùn)行結(jié)果:
二、Service
同理,在com包下新建一個(gè)類(lèi),UserService;
UserService里代碼;
package com; import org.springframework.stereotype.Service; @Service public class UserService { public void sayHi(){ System.out.println("hello UserService"); } }
啟動(dòng)類(lèi)App讀取對(duì)象;
ApplicationContext context= new ClassPathXmlApplicationContext("spring-config.xml"); UserService userService = context.getBean(UserService.class); userService.sayHi();
運(yùn)行結(jié)果:
三、 Repository
com包下新建一個(gè)類(lèi),名為UserRepository;
UserRepository類(lèi)中代碼段:
package com; import org.springframework.stereotype.Repository; @Repository public class UserRepository { public void sayHi(){ System.out.println("hello UserRepository"); } }
啟動(dòng)類(lèi)App中代碼段:
ApplicationContext context= new ClassPathXmlApplicationContext("spring-config.xml"); UserRepository userRepository = context.getBean(UserRepository.class); userRepository.sayHi();
運(yùn)行結(jié)果:
四、Configuration
在com包下新建類(lèi),名為UserConfiguration;
UserConfiguration類(lèi)中代碼段:
package com; import org.springframework.context.annotation.Configuration; @Configuration public class UserConfiguration { public void sayHi(){ System.out.println("hello UserConfiguration"); } }
啟動(dòng)類(lèi)App中代碼段:
ApplicationContext context= new ClassPathXmlApplicationContext("spring-config.xml"); UserConfiguration userConfiguration = context.getBean(UserConfiguration.class); userConfiguration.sayHi();
運(yùn)行結(jié)果:
五、Component
在com包下新建類(lèi),名為UserCompenent;
package com; import org.springframework.stereotype.Component; @Component public class UserComponent { public void sayHi(){ System.out.println("hello UserComponent"); } }
啟動(dòng)類(lèi)App中對(duì)應(yīng)代碼:
ApplicationContext context= new ClassPathXmlApplicationContext("spring-config.xml"); UserComponent userComponent = context.getBean(UserComponent.class); userComponent.sayHi();
運(yùn)行結(jié)果:
五大類(lèi)注解之間有什么關(guān)系?
想搞清楚這個(gè)問(wèn)題我們可以去查看一下每個(gè)注解對(duì)應(yīng)的源碼,直接按住Ctrl+鼠標(biāo)左鍵即可前往對(duì)應(yīng)注解的源碼;
1、比如我們這里先查看一下Controller的源碼;
進(jìn)來(lái)之后我們發(fā)現(xiàn)Controller的實(shí)現(xiàn)也用到了Component;
2、我們?cè)俨榭匆幌耂ervice的源碼;
同樣,進(jìn)來(lái)之后我們發(fā)現(xiàn)Service的實(shí)現(xiàn)也用到了Component;
所以可得到以下結(jié)論: @Controller、@Service、@Repository、@Configuration 都是基于 @Component 實(shí)現(xiàn)的,所以@Component 可以認(rèn)為是其他 4 個(gè)注解的父類(lèi)。
四、Spring使用五大類(lèi)注解生成beanName的問(wèn)題
1、首先找到全局搜索框
2、點(diǎn)擊之后輸入beanname,找到紅色箭頭指向的類(lèi),雙擊打開(kāi);
3、打開(kāi)后往下拉,找到紅色框框中的方法,ctrl+鼠標(biāo)左鍵查看源碼;
4、可以看到beanname的命名規(guī)則;
??簡(jiǎn)單來(lái)說(shuō)就是,類(lèi)名中第一個(gè)字母為大寫(xiě),第二個(gè)字母也為大寫(xiě),那么beanname的名稱(chēng)就是返回"原類(lèi)名",否則將首字母轉(zhuǎn)換為小寫(xiě)作為beanname返回;
??OK,今天的內(nèi)容就到這里啦,下篇博客繼續(xù)更新使用方法注解@Bean將對(duì)象更簡(jiǎn)單的存儲(chǔ)到容器中?。?/p>
總結(jié)
到此這篇關(guān)于Spring如何更簡(jiǎn)單的讀取和存儲(chǔ)對(duì)象的文章就介紹到這了,更多相關(guān)Spring讀取和存儲(chǔ)對(duì)象內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
servlet監(jiān)聽(tīng)器的學(xué)習(xí)使用(三)
這篇文章主要為大家詳細(xì)介紹了servlet監(jiān)聽(tīng)器學(xué)習(xí)使用的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09Java反射 JavaBean對(duì)象自動(dòng)生成插入,更新,刪除,查詢sql語(yǔ)句操作
這篇文章主要介紹了Java反射 JavaBean對(duì)象自動(dòng)生成插入,更新,刪除,查詢sql語(yǔ)句操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08mybatis一對(duì)多兩種mapper寫(xiě)法實(shí)例
這篇文章主要介紹了mybatis一對(duì)多兩種mapper寫(xiě)法實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12Servlet會(huì)話技術(shù)基礎(chǔ)解析
這篇文章主要介紹了Servlet會(huì)話技術(shù)基礎(chǔ)解析,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12Springboot jdbctemplate整合實(shí)現(xiàn)步驟解析
這篇文章主要介紹了Springboot jdbctemplate整合實(shí)現(xiàn)步驟解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08