国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

SpringBoot在自定義類中調(diào)用service層等Spring其他層操作

瀏覽:48日期:2023-03-06 11:15:03
背景:

做了一個(gè)TCP服務(wù)器來接入智能設(shè)備,然后需要將設(shè)備實(shí)時(shí)發(fā)送的定位等關(guān)鍵信息存儲(chǔ)到數(shù)據(jù)庫。

為了考慮將來可能對外提供rest接口,采用將TCP服務(wù)器集成到SpringBoot框架,當(dāng)然,也是為了能最快利用mybatis框架實(shí)現(xiàn)數(shù)據(jù)訪問,然后依次解決了如何啟動(dòng),如何注銷等各種問題,然后在TCP服務(wù)器消息處理時(shí),需要寫數(shù)據(jù)庫,直接調(diào)用DAO層,編譯報(bào)錯(cuò)。

改為調(diào)用Service層,編譯正常,運(yùn)行到調(diào)用的地方,報(bào)空指針異常,跟蹤到異常位置,發(fā)現(xiàn)service為空,也就是按照之前controller層通過@Autowired注入service層失效。

解決方案:1.上代碼

@Componentpublic class ServerHandler extends IoHandlerAdapter { @Autowired protected HealthDataService healthDataService; private static ServerHandler serverHandler ; @PostConstruct //通過@PostConstruct實(shí)現(xiàn)初始化bean之前進(jìn)行的操作 public void init() { serverHandler = this; serverHandler.healthDataService = this.healthDataService;// 初使化時(shí)將已靜態(tài)化的testService實(shí)例化 } //測試調(diào)用 public void test(){serverHandler .healthDataService.<你的service層方法>; }2.說明:

將需要調(diào)用Spring的Service層的類通過@Component注解為組件加載;

同樣通過@Autowired獲取Service層的Bean對象;

為類聲明一個(gè)靜態(tài)變量,方便下一步存儲(chǔ)bean對象;

劃重點(diǎn):通過注解@PostConstruct ,在初始化的時(shí)候初始化靜態(tài)對象和它的靜態(tài)成員變量healthDataService,原理是拿到service層bean對象,靜態(tài)存儲(chǔ)下來,防止被釋放。

那些趟過的坑:

剛開始調(diào)用的時(shí)候,總覺得很簡單,以前springmvc寫個(gè)配置,將對象標(biāo)注為bean就可以隨意調(diào)用Spring IOC容器的beans了,但是這是SpringBoot,估計(jì)還是有區(qū)別,一次試驗(yàn)了百度出來的前三頁幫助,基本沒有成功的。包括:

1)將工具類申明為spring組件,如@controller @compent 等,在spring自動(dòng)掃描包設(shè)置中將工具類所在的包加進(jìn)來; 無效

2)new一個(gè)service; 無效;

springboot多個(gè)service互相調(diào)用的事務(wù)處理

想在一個(gè)service的方法A中,調(diào)用另一個(gè)service的方法B,方法A和方法B均存在數(shù)據(jù)庫插入操作,并且@Transaction注解也都加了,但是當(dāng)B方法中拋出異常時(shí),A中的插入語句還是能夠執(zhí)行成功。

注解配置如下:

@Transactional(isolation= Isolation.DEFAULT,propagation= Propagation.REQUIRED)

百思不得其解,再查找了相關(guān)資料后,問題還是出在@Transaction注解的配置上,需要配置異常回滾。

@Transactional(isolation= Isolation.DEFAULT,propagation= Propagation.REQUIRED,rollbackFor = Exception.class)

這樣,當(dāng)B方法中拋出異常時(shí),A中的操作也會(huì)進(jìn)行回滾,事務(wù)就會(huì)起到控制作用。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 亚洲国产精品线在线观看 | 欧美亚洲第一区 | 一级床上爽高清播放 | 成年人免费网站在线观看 | 91资源在线播放 | 一级特黄aaa大片在 一级特黄aaa大片在线观看 | 亚洲专区在线视频 | 日韩视频欧美视频 | 手机看片国产在线 | 国产精品久久一区一区 | 欧美日本色| 成人α片 | 美女视频黄a全部免费专区一 | 一级毛片私人影院老司机 | 黄色免费看片网站 | 中文在线视频观看 | 91久久99久91天天拍拍 | 18视频免费网址在线观看 | 日本高清不卡中文字幕 | 国产精品久久国产精品99 | 久久频这里精品99香蕉久网址 | 夜色www国产精品资源站 | 女人张开腿 让男人桶视频 女人张开腿等男人桶免费视频 | 国产精品久久久久久久毛片 | 国产成人精品免费视频大全五级 | 91情侣在线偷精品国产 | 久久精品在线免费观看 | 成人毛片高清视频观看 | 欧美大片无尺码在线观看 | 国产成人免费福利网站 | 亚洲免费在线视频观看 | 国内精品久久久久久影院8f | 欧美日韩一区二区三在线 | 国产伦精品一区二区三区免费 | 久久综合久久自在自线精品自 | 成人做爰www | 欧美性色高清生活片 | 久久精品6 | 最新精品在线视频 | 大片国产片日本观看免费视频 | 风流慈禧一级毛片在线播放 |