spring 經過註解實現工具類injection Service方法

在開發過程當中,咱們常常有碰到工具類裏面,要執行CRUD操做,須要調用到Service實現類,這時能夠經過下述方法來獲得。

方式一 【比較繁瑣,內部靜態化】

1injection @Component

在持久層、業務層和控制層中,分別採用@Repository、@Service和@Controller對分層中的類進行凝視;而用@Component對那些比較中立的類進行凝視。
【以下圖:@Repository、@Service,@Controller,@Component在同一路徑下,分別對不一樣類型的類進行凝視】spring

spring 經過註解實現工具類injection Service方法

2injection @PostConstruct

經過@PostConstruct 和 @PreDestroy 方法 實現初始化和銷燬bean以前進行的操做。
經過 步驟1:定義一個static 的工具類參數,步驟2 在用 @PostConstruct初始化中,把該靜態參數實例化json

```
@Component
public class SMSUtils {

@Autowired
private ISmsService smsService;  //添加所需service的私有成員【不能加static,否則smsService會等於null,由於static方法是先於對象建立以前就已經加載的方法,先於構造執行,是屬於類的方法】
private static SMSUtils smsUtils; //  步驟1  靜態初使化 一個工具類  這樣是爲了在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 初使化時將已靜態化的testService實例化,便可以使用 smsUtils.smsService.smsServicelai 來調用service服務
}

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

方式二 【交給spring來處理,推薦】 步驟1 injection @Component,該工具類已經injection 到spring中 步驟2 在須要調用工具類的類下注該工具類 @Autowired

@Component
public class SMSUtils {
    @Autowired
    private ISmsService smsService;
        .....
}
@RestController
public class AuthController extends SuperRestController {
    @Autowired
    private SMSUtils smsUtils;
        ....
相關文章
相關標籤/搜索