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