电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

解決springboot無法注入JpaRepository的問題

瀏覽:4日期:2023-03-27 08:51:25

使用內置服務器啟動springboot項目時,會從@SpringBootApplication修飾類所在的包開始,加載當前包和所有子包下的類,將由@Component @Repository @Service @Controller修飾的類交由spring進行管理。

package com.facade;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.ConfigurableApplicationContext;import org.springframework.stereotype.Component;@SpringBootApplicationpublic class Application { public static void main(String[] args) { ConfigurableApplicationContext context = SpringApplication.run(Application.class, args); String[] profiles = context.getEnvironment().getActiveProfiles(); if (profiles != null) { for (String profile : profiles) {System.out.println('------------start with profile : ' + profile); } } }}

在使用Spring data jpa時,通常都是繼承Repository接口相關的其他接口,然后Spring data jpa在項目啟動時,會為所有繼承了Repository的接口(@NoRepositoryBean修飾除外)創建實現類,并交由Spring管理。

例如,

package com.facade.repository;import org.springframework.data.repository.PagingAndSortingRepository;import com.facade.entity.HttpDoc;public interface HttpDocRepository extends PagingAndSortingRepository<HttpDoc, Long> {}

package com.facade.service;import com.facade.entity.HttpDoc;public interface HttpDocService { public HttpDoc save(HttpDoc entity); public HttpDoc getById(Long id); public Iterable<HttpDoc> findAll();}

package com.facade.service.impl;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;import com.facade.entity.HttpDoc;import com.facade.repository.HttpDocRepository;import com.facade.service.HttpDocService;@Service@Transactionalpublic class HttpDocServiceImpl implements HttpDocService { @Autowired private HttpDocRepository httpDocRepository; @Override public HttpDoc save(HttpDoc entity) { return httpDocRepository.save(entity); } @Override public HttpDoc getById(Long id) { return httpDocRepository.findOne(id); } @Override public Iterable<HttpDoc> findAll() { return httpDocRepository.findAll(); }}

以上代碼Application處于HttpDocRepository HttpDocServiceImpl的根目錄中,所以HttpDocRepository是可以被成功注入到HttpDocServiceImpl中的。

如果將Application移動到其他平行目錄或者子目錄,就算使用scanBasePackages指定掃描目錄也無法將HttpDocRepository成功注入,會產生如下錯誤描述

Action:

Consider defining a bean of type ’com.facade.repository.HttpDocRepository’ in your configuration.

補充:(親測好用的解決方法)springboot2.x整合jpaRepository中的坑

今日折騰的時候發現了一起在1.5的時候整合jpa可以使用的findOne方法突然找不到了,如下:

解決springboot無法注入JpaRepository的問題

可以看到這個方法里面不能傳入String/Integer類型的值,所以百度了一番。

有網友給了一個通過get()再取值的方法,測試了一番并無效果。通過瀏覽調用方法列表發現了一個getOne()的方法,返回值類型和傳遞的參數都符合就試了一下

解決springboot無法注入JpaRepository的問題

測試通過

解決springboot無法注入JpaRepository的問題

這是由于jpa懶加載的問題引起的,可以在測試關聯的實體類中添加@Proxy(lazy=false)解決

解決springboot無法注入JpaRepository的問題

測試通過

解決springboot無法注入JpaRepository的問題

順帶想著測試一下findById()的方法也發現了一個問題

解決springboot無法注入JpaRepository的問題

返回值變為了一個Optional<>,這個可以通過get()方法得到想要的類型值。

解決springboot無法注入JpaRepository的問題

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。如有錯誤或未考慮完全的地方,望不吝賜教。

標簽: Spring
相關文章:
主站蜘蛛池模板: 隧道窑炉,隧道窑炉厂家-山东艾瑶国际贸易 | 河南新乡德诚生产厂家主营震动筛,振动筛设备,筛机,塑料震动筛选机 | 匀胶机旋涂仪-声扫显微镜-工业水浸超声-安赛斯(北京)科技有限公司 | 百度关键词优化_网站优化_SEO价格 - 云无限好排名 | 河南生物显微镜,全自动冰冻切片机-河南荣程联合科技有限公司 | 微波消解仪器_智能微波消解仪报价_高压微波消解仪厂家_那艾 | 照相馆预约系统,微信公众号摄影门店系统,影楼管理软件-盟百网络 | 扒渣机厂家_扒渣机价格_矿用扒渣机_铣挖机_撬毛台车_襄阳永力通扒渣机公司 | 小型玉石雕刻机_家用玉雕机_小型万能雕刻机_凡刻雕刻机官网 | 河南15年专业网站建设制作设计,做网站就找郑州启凡网络公司 | 诗词大全-古诗名句 - 古诗词赏析 | 细沙回收机-尾矿干排脱水筛设备-泥石分离机-建筑垃圾分拣机厂家-青州冠诚重工机械有限公司 | 瑞典Blueair空气净化器租赁服务中心-专注新装修办公室除醛去异味服务! | 无味渗透剂,泡沫抑尘剂,烷基糖苷-威海威能化工有限公司 | 组织研磨机-高通量组织研磨仪-实验室多样品组织研磨机-东方天净 传递窗_超净|洁净工作台_高效过滤器-传递窗厂家广州梓净公司 | IHDW_TOSOKU_NEMICON_EHDW系列电子手轮,HC1系列电子手轮-上海莆林电子设备有限公司 | 浙江栓钉_焊钉_剪力钉厂家批发_杭州八建五金制造有限公司 | 风化石头制砂机_方解石制砂机_瓷砖石子制砂机_华盛铭厂家 | 对夹式止回阀厂家,温州对夹式止回阀制造商--永嘉县润丰阀门有限公司 | 购买舔盐、舔砖、矿物质盐压块机,鱼饵、鱼饲料压块机--请到杜甫机械 | 北京浩云律师事务所-法律顾问_企业法务_律师顾问_公司顾问 | 河南卓美创业科技有限公司-河南卓美防雷公司-防雷接地-防雷工程-重庆避雷针-避雷器-防雷检测-避雷带-避雷针-避雷塔、机房防雷、古建筑防雷等-山西防雷公司 | 冷藏车-东风吸污车-纯电动环卫车-污水净化车-应急特勤保障车-程力专汽厂家-程力专用汽车股份有限公司销售二十一分公司 | 异噻唑啉酮-均三嗪-三丹油-1227-中北杀菌剂厂家 | 模型公司_模型制作_沙盘模型报价-中国模型网 | LOGO设计_品牌设计_VI设计 - 特创易 | 氮化镓芯片-碳化硅二极管 - 华燊泰半导体 | 深圳市八百通智能技术有限公司官方网站 | 复合肥,化肥厂,复合肥批发,化肥代理,复合肥品牌-红四方 | 海德莱电力(HYDELEY)-无功补偿元器件生产厂家-二十年专业从事电力电容器 | 江西高职单独招生-江西单招考试-江西高职单招网 | 美的商用净水器_美的直饮机_一级代理经销商_Midea租赁价格-厂家反渗透滤芯-直饮水批发品牌售后 | 温州中研白癜风专科_温州治疗白癜风_温州治疗白癜风医院哪家好_温州哪里治疗白癜风 | 冲锋衣滑雪服厂家-冲锋衣定制工厂-滑雪服加工厂-广东睿牛户外(S-GERT) | 废气处理设备-工业除尘器-RTO-RCO-蓄热式焚烧炉厂家-江苏天达环保设备有限公司 | 旋转滴界面张力仪(张力测定仪器)-百科| 医学动画公司-制作3d医学动画视频-医疗医学演示动画制作-医学三维动画制作公司 | 焊接烟尘净化器__焊烟除尘设备_打磨工作台_喷漆废气治理设备 -催化燃烧设备 _天津路博蓝天环保科技有限公司 | 示波器高压差分探头-国产电流探头厂家-南京桑润斯电子科技有限公司 | 权威废金属|废塑料|废纸|废铜|废钢价格|再生资源回收行情报价中心-中废网 | 深圳善跑体育产业集团有限公司_塑胶跑道_人造草坪_运动木地板 |