亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • SpringBoot如何實現其他普通類調用Spring管理的Service,dao等bean

SpringBoot如何實現其他普通類調用Spring管理的Service,dao等bean

發布時間:2022-03-03 15:14:21 來源:億速云 閱讀:600 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關SpringBoot如何實現其他普通類調用Spring管理的Service,dao等bean,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

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

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

舉個使用情景

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

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

(1)首先需要新建一個類,實現 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。

SpringBoot如何實現其他普通類調用Spring管理的Service,dao等bean

然后就可以直接調用了。

SpringBoot如何實現其他普通類調用Spring管理的Service,dao等bean

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

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

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啟動類中將工具類導入

不然依然無法使用

SpringBoot如何實現其他普通類調用Spring管理的Service,dao等bean

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());
	}
}

關于“SpringBoot如何實現其他普通類調用Spring管理的Service,dao等bean”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

印江| 那坡县| 甘德县| 西林县| 南丰县| 桂阳县| 民权县| 台北县| 隆安县| 民丰县| 炉霍县| 通辽市| 合江县| 西贡区| 樟树市| 井研县| 门头沟区| 宁安市| 刚察县| 修水县| 新绛县| 珠海市| 喜德县| 工布江达县| 长春市| 新余市| 黑河市| 栾城县| 陇西县| 石屏县| 云浮市| 乐安县| 辽阳县| 红原县| 潍坊市| 兰坪| 济南市| 宝坻区| 聊城市| 边坝县| 嵊州市|