最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot實現(xiàn)其他普通類調用Spring管理的Service,dao等bean

 更新時間:2021年11月16日 09:32:34   作者:嚴少來也  
這篇文章主要介紹了SpringBoot實現(xiàn)其他普通類調用Spring管理的Service,dao等bean,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

普通類調用Spring管理的Service、dao等bean

在springboot的使用中,有時需要在其他的普通類中調用托管給spring的dao或者service,從而去操作數(shù)據(jù)庫。網(wǎng)上大多數(shù)的資料都是說添加一些注解什么的,但是這都是不行的。

舉個使用情景

比如在服務器在于硬件或者客戶端之間進行Socket通訊時,那么如果說服務器收到了一條消息,需要去操作數(shù)據(jù)庫的話,怎么去調用Service或者dao去操作數(shù)據(jù)庫呢?

下面來看我給出的解決辦法

(1)首先需要新建一個類,實現(xiàn) ApplicationContextAware 接口。

@Component  
public class SpringUtils implements ApplicationContextAware {  
    private static ApplicationContext applicationContext = null;  
    @Override  
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {  
        if(SpringUtils.applicationContext == null){  
            SpringUtils.applicationContext  = applicationContext;  
        }  
    }  
 
    //獲取applicationContext  
    public static ApplicationContext getApplicationContext() {  
        return applicationContext;  
    }  
 
    //通過name獲取 Bean.  
    public static Object getBean(String name){  
        return getApplicationContext().getBean(name);  
    }  
 
    //通過class獲取Bean.  
    public static <T> T getBean(Class<T> clazz){  
        return getApplicationContext().getBean(clazz);  
    }  
 
    //通過name,以及Clazz返回指定的Bean  
    public static <T> T getBean(String name,Class<T> clazz){  
        return getApplicationContext().getBean(name, clazz);  
    }  
}  

(2)在通訊類中獲取ApplicationContext對象,然后去獲取需要的service 或者 dao。

然后就可以直接調用了。

普通類中使用service、dao層中的類,只需三步

在一個web項目的jsp中想要使用service中的一個類來獲取數(shù)據(jù)庫中的數(shù)據(jù),但是用完之后報錯說是空指針異常,上網(wǎng)查了之后總結了一下解決辦法,只需三步。

1、寫一個工具類 SpringUtil

package com.shop.util;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
public final class SpringUtil implements ApplicationContextAware {
	private static ApplicationContext applicationContext = null;
	@Override
	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
		// TODO Auto-generated method stub
		if (SpringUtil.applicationContext == null) {
			SpringUtil.applicationContext = applicationContext;
			System.out.println(
					"========ApplicationContext配置成功,在普通類可以通過調用ToolSpring.getAppContext()獲取applicationContext對象,applicationContext="
							+ applicationContext + "========");
		}
	}
	
	public static ApplicationContext getApplicationContext() {
		return applicationContext;
	}
	
	//通過
	public static Object getBean(String name) {
		return getApplicationContext().getBean(name);
	}
	
	//通過class獲取Bean.
    public static <T> T getBean(Class<T> clazz){
           return getApplicationContext().getBean(clazz);
    }
}

2、在Application啟動類中將工具類導入

不然依然無法使用

在這里插入圖片描述

3、在ApplicationTests測試類中調用

package com.shop.JZShop;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import com.shop.serviceImpl.GoodsServiceImpl;
import com.shop.util.SpringUtil;
@RunWith(SpringRunner.class)
@SpringBootTest
public class JzShopApplicationTests {
	
	@Test
	public void contextLoads() {
		//GoodsServiceImpl為我想要獲取的service層中的類
		GoodsServiceImpl goodsServiceImpl = (GoodsServiceImpl)SpringUtil.getBean(GoodsServiceImpl.class);
		System.out.println(goodsServiceImpl.getGoodsByID(27).getGoodsName());
	}
}

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • SpringBoot調用DeepSeek接口的實現(xiàn)

    SpringBoot調用DeepSeek接口的實現(xiàn)

    本文主要介紹了SpringBoot調用DeepSeek接口的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-02-02
  • Java從零實現(xiàn)超市會員管理系統(tǒng)

    Java從零實現(xiàn)超市會員管理系統(tǒng)

    這篇文章主要為大家詳細介紹了Java實現(xiàn)超市會員管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-12-12
  • Java Apache Shiro安全框架快速開發(fā)詳解流程

    Java Apache Shiro安全框架快速開發(fā)詳解流程

    Apache Shiro是一個強大且易用的Java安全框架,執(zhí)行身份驗證、授權、密碼和會話管理。使用Shiro的易于理解的API,您可以快速、輕松地獲得任何應用程序,從最小的移動應用程序到最大的網(wǎng)絡和企業(yè)應用程序
    2021-10-10
  • java 實現(xiàn)最小二叉樹堆排序的實例

    java 實現(xiàn)最小二叉樹堆排序的實例

    這篇文章主要介紹了java 實現(xiàn)最小二叉樹堆排序的實例的相關資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • 詳解SpringBoot中@PostMapping注解的用法

    詳解SpringBoot中@PostMapping注解的用法

    在SpringBoot中,我們經(jīng)常需要編寫RESTful Web服務,以便于客戶端與服務器之間的通信,@PostMapping注解可以讓我們更方便地編寫POST請求處理方法,在本文中,我們將介紹@PostMapping注解的作用、原理,以及如何在SpringBoot應用程序中使用它
    2023-06-06
  • java隨機生成10位數(shù)的字符串ID

    java隨機生成10位數(shù)的字符串ID

    這篇文章主要為大家詳細介紹了java隨機生成10位數(shù)字符串ID的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • mybatisplus 多表關聯(lián)條件分頁查詢的實現(xiàn)

    mybatisplus 多表關聯(lián)條件分頁查詢的實現(xiàn)

    本文主要介紹了mybatisplus 多表關聯(lián)條件分頁查詢的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-01-01
  • SpringSessionRedis配置及發(fā)現(xiàn)的問題講解

    SpringSessionRedis配置及發(fā)現(xiàn)的問題講解

    今天小編就為大家分享一篇關于SpringSessionRedis配置及發(fā)現(xiàn)的問題講解,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • SpringBoot實現(xiàn)在webapp下直接訪問html,jsp

    SpringBoot實現(xiàn)在webapp下直接訪問html,jsp

    這篇文章主要介紹了SpringBoot實現(xiàn)在webapp下直接訪問html,jsp問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Java利用序列化實現(xiàn)對象深度clone的方法

    Java利用序列化實現(xiàn)對象深度clone的方法

    這篇文章主要介紹了Java利用序列化實現(xiàn)對象深度clone的方法,實例分析了java序列化及對象克隆的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07

最新評論

荥阳市| 盘山县| 望谟县| 太原市| 盐源县| 四川省| 双柏县| 乌鲁木齐市| 定安县| 栖霞市| 宜宾县| 丰都县| 贵溪市| 衡东县| 宽城| 毕节市| 胶南市| 海伦市| 稻城县| 高密市| 达孜县| 临沭县| 丰都县| 天祝| 神农架林区| 同心县| 桂林市| 白城市| 栖霞市| 丹阳市| 唐河县| 长岭县| 东海县| 辽中县| 津市市| 清丰县| 新晃| 望谟县| 昔阳县| 高阳县| 江永县|