1. 程式人生 > >關於使用spring框架的時候抽象類中注入其他實現類失敗的解決方法

關於使用spring框架的時候抽象類中注入其他實現類失敗的解決方法

/** * 抽象基類,為所有子類提供一個 流程操作演算法框架。 * @author */ @Transactional public abstract class RefreshBeverage { @Resource private TaskFollowMapper taskFollowMapper; @Resource private TaskMapper taskMapper; @Resource private FlowLinkMapper flowLinkMapper; @Resource(name = "taskFollowIdService") private StepSequenceFactory taskFollowIdService;
/** * 流程操作的模板方法。 分裝類所有子類共同遵循的演算法框架 final:是得它不能被子類所複寫 原則:子類可以替換父類中可變邏輯,但不可以改變整體邏輯結構 */ /** * 流程操作模板。 * @param staff 引數 使用者實體 * @param rwid 引數 任務ID * @param op 引數 操作 * @return boolean */ public final boolean prepareBeverageTemplate(Map<String, Object> params) { // 步驟1 任務查詢 Task task = taskSelect(params); // 步驟2 最新流程跟蹤資訊查詢 params.put("pkid", task.getRwgzid()); TaskFollow taskFollow = taskFollowSelect(params); // 步驟3 流程線中獲取下一個節點 params.put("lcid", taskFollow.getLcid()); params.put("sygjd", taskFollow.getJdid()); FlowLink flowLink = flowLinkSelect(params); // 判斷是否有下一個節點,如果沒有,則提前結束 if (flowLink == null) { return false; } // 步驟4 流程跟蹤修改 params.put("czsj", DateUtil.getCrrentTime()); taskFollowUpdate(params); // 步驟5 流程跟蹤插入 String pkid = String.valueOf(taskFollowIdService.create()); params.put("pkid", pkid); params.put("jdid", flowLink.getXygjd()); taskFollowInsert(params); // 判斷一下是否到了結束節點 if (flowLink.getXygjd().equals(Constants.FLOW_STATUS_CLOSE)) { //步驟6 修改狀態為完成並更新任務跟蹤ID params.put("rwgzid", pkid); params.put("rwzt", Constants.EXAMINE_AND_APPROVE_FINISH); taskUpdate(params); } else { // 步驟6 任務資訊修改 params.put("rwgzid", pkid); taskUpdate(params); } if (isCustome()) { // 步驟7 任務狀態資訊修改(佔時只有駁回操作才會執行) taskUpdateRwzt(params); } return true; } /** * 詢問使用者是否駁回: Hook,鉤子函式,提供一個預設或空的實現 具體子類可以自行決定是否掛鉤以及如何掛鉤。 * @return boolean */ protected boolean isCustome() { return false; } // private對子類減少複雜度,隱藏細節 private Task taskSelect(Map<String, Object> params) { Task task=taskMapper.selectTaskByrwid(params);
return task; } // private對子類減少複雜度,隱藏細節 private TaskFollow taskFollowSelect(Map<String, Object> params) { return taskFollowMapper.selectTaskFollowByrwgzid(params); } // private對子類減少複雜度,隱藏細節 private FlowLink flowLinkSelect(Map<String, Object> params) { return flowLinkMapper.selectNextNote(params); } // private對子類減少複雜度,隱藏細節 private void taskFollowUpdate(Map<String, Object> params) { taskFollowMapper.updateBypkid(params); } // private對子類減少複雜度,隱藏細節 private void taskFollowInsert(Map<String, Object> params) { taskFollowMapper.insert(params); } // private對子類減少複雜度,隱藏細節 private void taskUpdate(Map<String, Object> params) { taskMapper.updateByrwid(params); } /** * 抽象的基本方法。 * @param task 引數 任務實體 */ protected abstract void taskUpdateRwzt(Map<String, Object> params); }

相關推薦

關於使用spring框架的時候抽象注入其他實現失敗解決方法

/** * 抽象基類,為所有子類提供一個 流程操作演算法框架。 * @author */ @Transactional public abstract class RefreshBeverage { @Resource private TaskFollowMapper taskFo

xamppapache點擊啟動失敗解決方法

expec 錯誤 his exp 使用 check eth you err 錯誤提示: 9:15:53 AM [Apache] Error: Apache shutdown unexpectedly.9:15:53 AM [Apache] This may be due

spring抽象注入bean

在使用spring的時候,有時由於設計的需要,需要使用抽象類(比如模板方法模式),但在抽象類中實現方法是需要依賴其他的介面或類的方法,這時就需要對依賴的介面或類進行注入,需要注意以下內容: 在抽象類中需要注入(@autowire),在繼承了該抽象類的子類中同樣需要再次注入。比如當前專案中,使用者

sshspring向Action@Autowired注入service空指標問題解決

使用servlet注入時,上一篇博文已經解釋了,但是在使用ssh框架時,就不能用同樣的方法了。 下面是解決方案: (1)pom.xml檔案中有沒有引入struts2-spring-plugin包 <!-- https://mvnrepository.com/artifact/

Spring boot將配置屬性注入到bean

一、@ConfigurationProperties註解的使用 看配置檔案,我的是yaml格式的配置: // file application.yml my: servers: - dev.bar.com - foo.bar.co

Action基注入service的方法(SSH框架

Action基類  BaseAction:    protected LogService logService;         //並設定setget方法    public void saveLog() {        logService.saveLog();   

Spring介面和實現命名規範的問題

 今天弄專案遇到一個問題,啟動總是報500的錯誤,查了原因是sping掃描不到一個叫"lGraProjectImpl"的實現類。 恩,找不到就查原因唄,看看是不是單詞拼寫錯了,還是什麼地方忘記注入了。 專案翻了個遍發現是對的啊,沒有問題啊,單詞,大小寫都是對的啊。 啟動還是

spring覆蓋父注入的bean

我們在設計程式框架的時候,會設計一個抽象基類,子類繼承這個基類,共有的方法放到基類中去,使用spring後使程式碼變的很簡單,現在遇到的問題是在基類中注入bean後,子類不可能都會是有這個bean,那麼需要考慮到子類需要覆蓋或者說重新注入個性化的bean 有三種方法來實現這

spring在靜態注入bean的的解釋

@Component public class ModelMapper { @AutoWired private static

spring框架學習筆記4:SpringAOP實現原理

odin 就是 sets 使用 point 攔截 ceo oca ssl AOP AOP(Aspect Oriented Programming),即面向切面編程,可以說是OOP(Object Oriented Programming,面向對象編程)的補充和完善。OOP引入

77.初始化數據,如果其他,需要重寫構造函數

cout cin pan public void blog main style ios 1 #include <iostream> 2 #include <cstdlib> 3 #include <string> 4 usin

使用列舉抽象進行遍歷實現,匹配響應的牌型(十三水特殊牌型)

public abstract class SpecialPokerRegularSss implements Comparator<PokerHolderSss>{ public enum SpecialType{ TRIPLET_SEQUENCE

工具注入springMVC管理的service

@Component public class RiskResult { private static Logger logger = LoggerFactory.getLogger(RiskResult.class); @Autowired private RiskSe

如何使用spring容器在一個呼叫另一個方法

學了spring容器之後,最基本的就是這個在一個類中呼叫另一個類中的方法了。本文講述的就是如何使用spring容器從一個類呼叫另一個類的方法。首先,我們先新建一個Student類,在類中建立一個int型別的方法。如圖: 第一個類Student就完成了,那麼我們

JavaList及其實現的解析

集合: 集合,集合是java中提供的一種容器,可以用來儲存多個數據。集合的長度是可變的,集合中儲存的元素必須是引用型別資料。 集合繼承關係圖:          List:     &n

利用配置檔案,在工廠建立一個實現物件

package cn.itcast.usermng.dao; import java.io.InputStream; import java.util.Properties; /**  * 通過配置檔案得到dao實現類的名稱!  * 通過類名稱,完成建立類物件!(反射完成

Spring boot 梳理 - SpringBoot注入ApplicationContext物件的三種方式

直接注入(Autowired) @Configuration public class OAConfig { @Autowired private ApplicationContext applicationContext; @B

Queue集合的PriorityQueue實現

Queue用於建立模擬佇列這種資料結構,Queue介面中定義瞭如下幾種方法: 方法 void add(Object e):將指定元素加入此佇列的尾部 boolean offer(Object e):將指定元素加入此佇列的尾部。當使用有容量限制的佇列時,

spring框架核心思想以及注入方式(一)

1.spring用來整合其它框架和技術 2. 將事務的控制放在配置檔案中管理(宣告式事務),用來取代程式設計式事務 3. spring的核心思想 IOC(Inversion of Controller)控制反轉 將管理java類的控制權

在C++使用pthread實現多執行緒

現在pthread的api已經相當完善,使用其實現多執行緒難度不大,但是值得注意的一點是當想在類中使用pthread,呼叫pthread_create函式時,傳入的執行函式,也就是下面這個原型的第三個引數void * ( * start_routine) (vo