SpringbootプロジェクトのAutowired注記はサービスに注入できません.注入はnullソリューションとして表示されます.


最近if elseを置き換える工場+ポリシーモードを書きました.前の記事を参照してください.書き終わったばかりの頃はこのように注入されたserviceでしたが、私がテストしたときはserviceの値がnullであることを示していました.つまり、noticeInfoServiceの値がnullであることを示していました.sendメソッドを呼び出すと空指針異常を報告します.
/**
 * app      
 * created by king on 2020/6/18 6:09   
 */
@Slf4j
@Service
public class AppSendMsgServiceImpl implements ISendMsgService {
    //       app         ,     ,             ~
    @Autowired
    private NoticeInfoServiceImpl noticeInfoService;

    @Override
    public boolean sendMsg(Object object) {
        
        return noticeInfoService.send((NoticeRequest) object);
    }
}

その後new noticeInfoServiceのように使いにくく、注入できませんでした.後で資料を探して、このように修正してサービスの注入と呼び出しを完成します
1、@compent注記を追加し、staticの構築方法を構築し、呼び出すときにクラス名を使用する.サービス属性名メソッド名
/**
 * app      
 * created by king on 2020/6/18 6:09   
 */
@Slf4j
@Component
public class AppSendMsgServiceImpl implements ISendMsgService {
    //       app         ,     ,             ~
    @Autowired
    private NoticeInfoServiceImpl noticeInfoService;
    
    private static AppSendMsgServiceImpl appSendMsgService;
    
    @PostConstruct //  @PostConstruct     bean       
    public void init() {
        appSendMsgService = this;
        appSendMsgService.noticeInfoService = this.noticeInfoService;
        //           testService   
    }

    @Override
    public boolean sendMsg(Object object) {
//           app       ,     ,             ~
       return appSendMsgService.noticeInfoService.send((NoticeRequest)object);
        
    }
}

これでサービスは正常に注入され、正常に呼び出されます.