@RequestMapping
public interface IDiagnoseApi {
/**
* timeOutMsgs:(诊断超时功能的MsgInfo接收并进行处理). <br/>
*
* @author zcl
* @param msgsStatusRest
* @return
* @since JDK 1.8
*/
@RequestMapping(value = "/callback", produces = { "application/json" }, method = RequestMethod.POST)
Response callBack(@RequestBody MsgsStatusRest msgsStatusRest);
}
@RestController
public class DiagnoseController implements IDiagnoseApi {
@Autowired
private MsgInfoTimeOutDiagnose msgInfoTimeOutDiagnose;
@Override
public Response callBack(@RequestBody final MsgsStatusRest msgsStatusRest) {
Response result;
try {
msgInfoTimeOutDiagnose.change(msgsStatusRest);
result = ResponseUtil.success();
} catch (Exception e) {
LOG.info(LogConst.COMMON_LOG_STR, LogActionTypeEnum.Diagnose, "", "", "", "", null,
ExceptionUtil.getMessage(e));
result = ResponseUtil.createResponse(ResponseStatusEnum.FAILED_TO_RESPONSE_DIAGNOSE, e.getMessage(),
"fail to change CTask status.");
}
return result;
}
}
@Service
public class MsgInfoTimeOutDiagnose {
private static final Logger LOG = LoggerFactory.getLogger(MsgInfoTimeOutDiagnose.class);
@Autowired
private RepositoryInstances repInstances;
@Autowired
private HandlerCompensation handlerCompensation;
public void change(MsgsStatusRest msgsStatusRest) {------------省略----}
MsgInfoTimeOutDiagnose无法在Controller里面通过@Autowired注入对象,现世报错为null,空指针。
原因是调用的feign接口callBack,前面多了final修饰符,所以内部的MsgInfoTimeOutDiagnose无法注入对象。
修改前错误:
@Override
public final Response callBack(@RequestBody final MsgsStatusRest msgsStatusRest) {
Response result;
try {
修改后正确:
@Override
public Response callBack(@RequestBody final MsgsStatusRest msgsStatusRest) {
Response result;
try {