通常須要在一個工具類中使用@Autowired 註解注入一個service。可是因爲工具類方法通常都寫成static,因此直接注入就存在問題。 java
使用以下方式能夠解決:
spring
- /**
- *
- */
- package cn.ffcs.drive.common.util;
-
- import javax.annotation.PostConstruct;
- import javax.servlet.http.HttpServletRequest;
-
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Component;
-
- import cn.ffcs.drive.domain.Admin;
- import cn.ffcs.drive.domain.OpeLog;
- import cn.ffcs.drive.service.IOpeLogService;
- import cn.ffcs.zq.util.DateUtils;
-
- /**
- * className:OpeLogUtils
- *
- * 管理員操做日誌
- *
- * @author pengyh
- * @version 1.0.0
- * @date 2014-07-10 09:04:48
- *
- */
- @Component
- public class OpeLogUtils {
-
- private static Logger logger = LoggerFactory.getLogger(OpeLogUtils.class);
-
- @Autowired
- private IOpeLogService opeLogService;
- private static OpeLogUtils opeLogUtils;
-
- public void setUserInfo(IOpeLogService opeLogService) {
- this.opeLogService = opeLogService;
- }
-
- @PostConstruct
- public void init() {
- opeLogUtils = this;
- opeLogUtils.opeLogService = this.opeLogService;
-
- }
-
- /**
- * 執行操做日誌入庫操做
- * @param adminId 管理員id
- * @param opeDesc 操做日誌信息
- * @param cityCode 城市編碼
- */
- public static void insertOpeLog(HttpServletRequest req, String opeDesc) {
- try {
- /**
- * 獲取管理員信息
- */
- Admin admin = DriveUtil.getSessionUser(req);
-
- if(admin != null && opeDesc != null && !opeDesc.trim().equals("")){
-
- //封裝日誌信息
- logger.info("開始封裝日誌信息。");
- OpeLog opeLog = new OpeLog();
-
- opeLog.setAdminId(admin.getId());
- opeLog.setCityCode(admin.getCityCode());
- opeLog.setOpeDesc("管理員id="+admin.getId()+"操做【"+opeDesc+"】");
- opeLog.setOpeTime(DateUtils.getNow());
- opeLog.setIsDelete("0");
- opeLogUtils.opeLogService.save(opeLog);
-
- logger.info("保存管理員操做日誌成功,信息爲【adminId:{},cityCode:{},opeDesc:{},opeTime:{}】",new Object[]{admin!=null?admin.getId():null,admin.getCityCode(),opeDesc,DateUtils.getNow()});
- }else{
- logger.info("保存操做日誌失敗,參數不足【adminId:{},cityCode:{},opeDesc:{},opeTime:{}】",new Object[]{admin!=null?admin.getId():null, admin!=null?admin.getCityCode():null, opeDesc, DateUtils.getNow()});
- }
- } catch (Exception e) {
- logger.error("保存操做日誌異常,異常信息爲:" + e.getMessage(), e);
- }
- }
-
- }