在開發過程當中,咱們常常有碰到工具類裏面,要執行CRUD操做,須要調用到Service實現類,這時能夠經過下述方法來獲得。
在持久層、業務層和控制層中,分別採用@Repository、@Service和@Controller對分層中的類進行凝視;而用@Component對那些比較中立的類進行凝視。
【以下圖:@Repository、@Service,@Controller,@Component在同一路徑下,分別對不一樣類型的類進行凝視】spring
經過@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 ); } }
@Component public class SMSUtils { @Autowired private ISmsService smsService; ..... }
@RestController public class AuthController extends SuperRestController { @Autowired private SMSUtils smsUtils; ....