溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

spring 通過(guò)注解實(shí)現(xiàn)工具類(lèi)injection Service方法

發(fā)布時(shí)間:2020-07-08 09:38:01 來(lái)源:網(wǎng)絡(luò) 閱讀:23711 作者:it林工 欄目:軟件技術(shù)

在開(kāi)發(fā)過(guò)程中,我們經(jīng)常有碰到工具類(lèi)里面,要執(zhí)行CRUD操作,需要調(diào)用到Service實(shí)現(xiàn)類(lèi),這時(shí)可以通過(guò)下述方法來(lái)得到。

方式一 【比較繁瑣,內(nèi)部靜態(tài)化】

1injection @Component

在持久層、業(yè)務(wù)層和控制層中,分別采用@Repository、@Service和@Controller對(duì)分層中的類(lèi)進(jìn)行凝視;而用@Component對(duì)那些比較中立的類(lèi)進(jìn)行凝視。
【如下圖:@Repository、@Service,@Controller,@Component在同一路徑下,分別對(duì)不同類(lèi)型的類(lèi)進(jìn)行凝視】

spring 通過(guò)注解實(shí)現(xiàn)工具類(lèi)injection Service方法

2injection @PostConstruct

通過(guò)@PostConstruct 和 @PreDestroy 方法 實(shí)現(xiàn)初始化和銷(xiāo)毀bean之前進(jìn)行的操作。
通過(guò) 步驟1:定義一個(gè)static 的工具類(lèi)參數(shù),步驟2 在用 @PostConstruct初始化中,把該靜態(tài)參數(shù)實(shí)例化

```
@Component
public class SMSUtils {

@Autowired
private ISmsService smsService;  //添加所需service的私有成員【不能加static,不然smsService會(huì)等于null,因?yàn)閟tatic方法是先于對(duì)象創(chuàng)建之前就已經(jīng)加載的方法,先于構(gòu)造執(zhí)行,是屬于類(lèi)的方法】
private static SMSUtils smsUtils; //  步驟1  靜態(tài)初使化 一個(gè)工具類(lèi)  這樣是為了在spring初使化之前

public static final String SMS_PHONE_CODE = "xxxxx"; 
public static final String SMS_REG_SUCCESS = "yyyyyy"; 

@PostConstruct
public void init() {
    smsUtils = this;
    smsUtils.smsService = this.smsService; //步驟2 初使化時(shí)將已靜態(tài)化的testService實(shí)例化,即可以使用 smsUtils.smsService.smsServicelai 來(lái)調(diào)用service服務(wù)
}

//發(fā)送短信驗(yàn)證碼 params 請(qǐng)嚴(yán)格按照模板輸出的字段順序來(lái)
public static void sendSms(String phone, String[] params, String templateCode) {
    SmsResponse smsResponse = smsUtils.smsService.sendSms( phone, jsonStr, templateCode );
}
}

方式二 【交給spring來(lái)處理,推薦】 步驟1 injection @Component,該工具類(lèi)已經(jīng)injection 到spring中 步驟2 在需要調(diào)用工具類(lèi)的類(lèi)下注該工具類(lèi) @Autowired

@Component
public class SMSUtils {
    @Autowired
    private ISmsService smsService;
        .....
}
@RestController
public class AuthController extends SuperRestController {
    @Autowired
    private SMSUtils smsUtils;
        ....
向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI