<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
@Component public class StructUtil { private static StructService structService; private static List<StructInfo> structInfos; // 通過重寫set注入 @Autowired public void setStructService(StructService structService){ StructUtil.structService = structService; } public static List<StructInfo> getStruct(){ if(null==structInfos){ structInfos = structService.getStruct(); } return structInfos; } }
在寫公眾號開發的時候,有一個處理get請求,我想使用Spring提供的RestTemplate處理傳送;
原來是這樣的
@Component public class WeChatContant { @Autowired private RestTemplate restTemplate; /** * 編寫Get請求的方法。但沒有引數傳遞的時候,可以使用Get請求 * * @param url 需要請求的URL * @return 將請求URL後返回的資料,轉為JSON格式,並return */ public JSONObject doGerStr(String url) throws IOException { ResponseEntity responseEntity = restTemplate.getForEntity ( url, String.class ); Object body = responseEntity.getBody(); assert body != null; JSONObject jsonObject = JSONObject.fromObject(body); System.out.println(11); return jsonObject; } }
但是到這裡的話restTemplate這個值為空,最後導致空指標異常。發生的原因是
static模組會被引入,當class載入後。你的component元件的依賴還沒有初始化。
(你的依賴都是null)
可以使用@PostConstruct這個註解解決
1,@PostConstruct 註解的方法在載入類別建構函式之後執行,也就是在載入了建構函式之後,為此,可以使用@PostConstruct註解一個方法來完成初始化,@PostConstruct註解的方法將會在依賴注入完成後被自動呼叫。
2,執行優先順序高於非靜態的初始化塊,它會在類初始化(類載入的初始化階段)的時候執行一次,執行完成便銷燬,它僅能初始化類變數,即static修飾的資料成員。
自己理解的意思就是在component元件都載入完之後再載入
修改過後的程式碼如下
@Component public class WeChatContant { @Autowired private RestTemplate restTemplate; private static RestTemplate restTemplateemp; @PostConstruct public void init(){ restTemplateemp = restTemplate; } /** * 編寫Get請求的方法。但沒有引數傳遞的時候,可以使用Get請求 * * @param url 需要請求的URL * @return 將請求URL後返回的資料,轉為JSON格式,並return */ public static JSONObject doGerStr(String url) throws IOException { ResponseEntity responseEntity = restTemplateemp.getForEntity ( url, String.class ); Object body = responseEntity.getBody(); assert body != null; JSONObject jsonObject = JSONObject.fromObject(body); System.out.println(11); return jsonObject; } }
以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45