激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

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

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

Spring boot 無法注入service問題

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

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

Spring boot 無法注入service

SpringBoot項(xiàng)目的Bean裝配默認(rèn)規(guī)則是根據(jù)Application類所在的包位置從上往下掃描!

“Application類”是指SpringBoot項(xiàng)目入口類。

這個(gè)類的位置很關(guān)鍵:

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

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

知道這一點(diǎn)非常關(guān)鍵,大多數(shù)情況下bean無法注入進(jìn)來都是這個(gè)原因引起的。

附上正確目錄結(jié)構(gòu)

Spring boot 無法注入service問題

@Autowired注入無法實(shí)例化service

問題場(chǎng)景

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

問題解讀

經(jīng)過查閱資料,netty的bean對(duì)象默認(rèn)不交由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.聲明構(gòu)造方案
    public NettyServerHandler(){}
    //4.添加注解,在項(xiàng)目初始化時(shí)執(zhí)行這個(gè)方法
    @PostConstruct
    public void init() {
        nettyServerHandler = this;
        nettyServerHandler.redisUtils = this.redisUtils;
    }
=====================================
經(jīng)過以上4步驟的處理
for (Map dto : variants){
    String key = dto.get("key").toString();                  
     nettyServerHandler.redisUtils.hmset(dto.get("key").toString(),
dto, 100000);
 }
//nettyServerHandler.redisUtils.hmset()  通過這種方式調(diào)用redisUtils就可以了

@PostConstruct 描述

@PostConstruct

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

@PostConstruct在項(xiàng)目中的用處

@PostConstruct注解的方法在項(xiàng)目啟動(dòng)的時(shí)候執(zhí)行這個(gè)方法,也可以理解為在spring容器啟動(dòng)的時(shí)候執(zhí)行,可加載項(xiàng)目中常規(guī)數(shù)據(jù)。

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

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

如果想在生成對(duì)象時(shí)候完成某些初始化操作,而偏偏這些初始化操作又依賴于依賴注入,那么就無法在構(gòu)造函數(shù)中實(shí)現(xiàn)。為此,可以使用@PostConstruct注解一個(gè)方法來完成初始化,@PostConstruct注解的方法將會(huì)在依賴注入完成后被自動(dòng)調(diào)用。

Constructor >> @Autowired >> @PostConstruct

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品午夜一区 | 天天草天天干天天射 | 久久久久成人精品亚洲国产 | 欧美日韩亚州综合 | 在线97视频 | 午夜精品久久久久久久爽 | 黄污污网站 | 久久亚洲成人 | 亚洲精品3| 国产免费一区二区三区网站免费 | 欧美人与性禽动交精品 | 欧美性受xxxxxx黑人xyx性爽 | 成年人视频免费看 | 欧美成人午夜影院 | 九一免费在线观看 | 亚洲精品成人久久 | 亚洲3p激情在线观看 | 精品国产一区二区三区在线 | 欧美日韩色 | 久色乳综合思思在线视频 | 日本欧美一区 | 欧美韩国日本在线 | 免费观看黄色一级视频 | 午夜精品毛片 | 日本免费一区二区三区四区 | 精品国产一区二区三区四 | 青青青在线免费 | 性欧美极品xxxx欧美一区二区 | 国产成人精品免费视频大全最热 | 综合日韩av | 黄色影院一级片 | 72pao成人国产永久免费视频 | 精品一区二区免费 | 日本不卡一区二区三区在线观看 | 欧美日韩亚洲另类 | 91丝袜| 欧美成年视频 | 免费一级毛片在线播放视频老 | 国产成人自拍av | 欧美精品国产综合久久 | 久久久久久免费 |