一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Spring boot 無法注入service問題

Spring boot 無法注入service問題

2022-02-13 14:22croder Java教程

這篇文章主要介紹了Spring boot 無法注入service問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Spring boot 無法注入service

SpringBoot項目的Bean裝配默認規則是根據Application類所在的包位置從上往下掃描!

“Application類”是指SpringBoot項目入口類。

這個類的位置很關鍵:

如果Application類所在的包為:com.boot.app,則只會掃描com.boot.app包及其所有子包,如果service或dao所在包不在com.boot.app及其子包下,則不會被掃描!

即,把Application類放到dao、service所在包的上級,com.boot.Application

知道這一點非常關鍵,大多數情況下bean無法注入進來都是這個原因引起的。

附上正確目錄結構

Spring boot 無法注入service問題

@Autowired注入無法實例化service

問題場景

springboot整合netty時,netty的處理類無法實例化service

問題解讀

經過查閱資料,netty的bean對象默認不交由spring管理

解決方案

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@Component//1.添加注解
public class NettyServerHandler extends ChannelInboundHandlerAdapter {
    private static Log log = LogFactory.getLog(NettyServerHandler.class);
    @Autowired
    private RedisUtils redisUtils;
    //2.聲明本類
    private static NettyServerHandler nettyServerHandler;
    //3.聲明構造方案
    public NettyServerHandler(){}
    //4.添加注解,在項目初始化時執行這個方法
    @PostConstruct
    public void init() {
        nettyServerHandler = this;
        nettyServerHandler.redisUtils = this.redisUtils;
    }
=====================================
經過以上4步驟的處理
for (Map dto : variants){
    String key = dto.get("key").toString();                  
     nettyServerHandler.redisUtils.hmset(dto.get("key").toString(),
dto, 100000);
 }
//nettyServerHandler.redisUtils.hmset()  通過這種方式調用redisUtils就可以了

@PostConstruct 描述

@PostConstruct

從Java EE5規范開始,Servlet增加了兩個影響Servlet生命周期的注解(Annotation):@PostConstruct和@PreConstruct。這兩個注解被用來修飾一個非靜態的void()方法.而且這個方法不能有拋出異常聲明。 @PostContruct是spring框架的注解,在方法上加該注解會在項目啟動的時候執行該方法,也可以理解為在spring容器初始化的時候執行該方法。

@PostConstruct在項目中的用處

@PostConstruct注解的方法在項目啟動的時候執行這個方法,也可以理解為在spring容器啟動的時候執行,可加載項目中常規數據。

spring中Constructor、@Autowired、@PostConstruct的順序

要將對象b注入到對象a,那么首先就必須得生成對象b與對象a,才能執行注入。所以,如果一個類a中有個成員變量b被@Autowired注解,那么@Autowired注入是發生在a的構造方法執行完之后的。

如果想在生成對象時候完成某些初始化操作,而偏偏這些初始化操作又依賴于依賴注入,那么就無法在構造函數中實現。為此,可以使用@PostConstruct注解一個方法來完成初始化,@PostConstruct注解的方法將會在依賴注入完成后被自動調用。

Constructor >> @Autowired >> @PostConstruct

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/daxiang52/article/details/79310889

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 扒开大腿狠狠挺进视频 | 欧美香蕉人人人人人人爱 | 无限在线观看免费入口 | 午夜亚洲国产 | 爽爽影院免费观看 | 五月香婷 | a级影视 | 亚洲免费黄色网 | 麻豆亚洲一区 | 91一个人的在线观看www | 亚洲2017天堂色无码 | 高h生子双性美人受 | 蜜桃视频在线观看www | 午夜一级毛片看看 | 91夜夜人人揉人人捏人人添 | 午夜理伦片免费 | 2018亚洲男人天堂 | 色狠狠狠狠狠香蕉 | 美女18隐私羞羞视频网站 | 大桥未久一区二区 | 思久久 | aaa一级毛片免费 | 韩国悲惨事件30无删减在线 | 忘忧草在线 | 下雨天小说词枝 | 男人的j进入女人的j免费 | 国产福利在线免费观看 | 娇妻与公陈峰姚瑶小说在线阅读 | 99久久国产综合精品麻豆 | 91肥熟国产老肥熟在线 | 亚洲精品中文 | 亚洲成av人片在线观看天堂无码 | 日韩性生活片 | 国产成人手机在线好好热 | 国产亚洲精品一区久久 | 成人伊在线影院 | 美琪美腿白丝交小说 | 色综合久久中文字幕 | 国产一区二区三区在线 | 久久精品麻豆国产天美传媒果冻 | 亚洲色图综合网 |