Spring如何更簡單的讀取和存儲對象
前言
上篇博客我們介紹了如何創(chuàng)建一個spring項目,并且如何的存、取對象,介紹了相關(guān)方法,那么本篇博客將接著上篇博客的內(nèi)容介紹如何更加簡單的讀取和存儲對象。
??在 Spring 中想要更簡單的存儲和讀取對象的核?是使?注解,也就是我們接下來要學習 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+鼠標左鍵即可前往對應(yīng)注解的源碼;
1、比如我們這里先查看一下Controller的源碼;

進來之后我們發(fā)現(xiàn)Controller的實現(xiàn)也用到了Component;

2、我們再查看一下Service的源碼;

同樣,進來之后我們發(fā)現(xiàn)Service的實現(xiàn)也用到了Component;
所以可得到以下結(jié)論: @Controller、@Service、@Repository、@Configuration 都是基于 @Component 實現(xiàn)的,所以@Component 可以認為是其他 4 個注解的父類。
四、Spring使用五大類注解生成beanName的問題
1、首先找到全局搜索框

2、點擊之后輸入beanname,找到紅色箭頭指向的類,雙擊打開;

3、打開后往下拉,找到紅色框框中的方法,ctrl+鼠標左鍵查看源碼;

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)文章
Java反射 JavaBean對象自動生成插入,更新,刪除,查詢sql語句操作
這篇文章主要介紹了Java反射 JavaBean對象自動生成插入,更新,刪除,查詢sql語句操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08
Springboot jdbctemplate整合實現(xiàn)步驟解析
這篇文章主要介紹了Springboot jdbctemplate整合實現(xiàn)步驟解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-08-08

