Spring?main方法中如何調用Dao層和Service層的方法
Spring main方法調用Dao層和Service層的方法
在web環(huán)境中,一般serviceImpl中的dao之類的數(shù)據(jù)庫連接都由容器啟動的時候創(chuàng)建好了,不會報錯。
但是在main中,沒有這個環(huán)境,所以需要獲取環(huán)境:
ApplicationContext ctx = new FileSystemXmlApplicationContext("src/applicationContext.xml"); PianoServiceImpl pianoService = (PianoServiceImpl) ctx.getBean("pianoServiceImpl"); //然后再調用方法 return pianoService.getPriceByBrand(brand);
如何在普通類中直接訪問service層或dao層
最近遇到一個問題,如何在工具類中去訪問dao層與service層的方法,因為可能本人底子比較薄弱,一開始未想到錯誤點在哪,后來debug才發(fā)現(xiàn)我的service或 dao 都是空的。
因為平時在調用service層時都是在controller中,有配置掃描注入,spring會根據(jù)配置自動注入所依賴的服務層。
但因我們寫的工具類不屬于controller層,所以當所寫接口需要調用服務層是,常常會為NULL。
下面 我直接來分享自己的解決方案:
第一種方案
寫個方法 implements ApplicationContextAware 接口
然后在你的工具類中
ApplicationContext appCtx = SpringContextUtil.getApplicationContext(); StatusMapper statusMapper = (StatusMapper)appCtx.getBean(StatusMapper.class);
這樣直接調用就好
第二種方案
網上看到的,未驗證過
1.將此工具類加上@Component注解
2.將所需調用的服務類設置成靜態(tài)屬性,并通過方法直接將服務層設置成工具類自己的屬性即可。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Java原生服務器接收上傳文件 不使用MultipartFile類
這篇文章主要為大家詳細介紹了Java原生服務器接收上傳文件,不使用MultipartFile類,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-09-09SpringBoot v2.2以上重復讀取Request Body內容的解決方案
這篇文章主要介紹了SpringBoot v2.2以上重復讀取Request Body內容的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10RabbitMQ,RocketMQ,Kafka?事務性,消息丟失,消息順序性和消息重復發(fā)送的處理策略問題
這篇文章主要介紹了RabbitMQ,RocketMQ,Kafka?事務性,消息丟失,消息順序性和消息重復發(fā)送的處理策略,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-03-03在Java開發(fā)中無法繞開的SpringBoot框架詳解
SpringBoot是一個基于Spring框架的快速開發(fā)框架,它的出現(xiàn)極大地簡化了Spring應用的開發(fā)流程,SpringBoot是一個快速開發(fā)的框架,它提供了一種快速構建應用程序的方式,本文給大家介紹在Java開發(fā)中無法繞開的框架:SpringBoot,感興趣的朋友一起看看吧2023-09-09springboot+redis+阿里云短信實現(xiàn)手機號登錄功能
這篇文章主要介紹了springboot+redis+阿里云短信實現(xiàn)手機號登錄功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2024-01-01