整合ibatis的spring工程升級到spring4.0實操手冊
Spring4及已經的版本放棄了對ibatis的整合支援,那有什麼辦法可以將自己的框架遷移升級到spring4呢。
我這裡有2個辦法可供參考:
1、改造spring-orm包:
A、首先從spring-orm的jar包中將ibatis相關的class檔案及包結構全部複製出來,以備後用。
B、更改工程的spring版本號到spring4
C、將已經複製出來的ibatis包結構全部拖入spring4中spring-orm包的響應位置
D、測試一下當前的應用,是不是已經可以了呢 ^_^
2、將spring直接升級到spring4.0,同時整合新的mybatis替代老版本的ibatis。
說明:這兩種辦法都各有優勢,同時也各有不足,實際升級過程中需要權衡考慮利弊關係。
第一中方法,在架構升級過程中,確保了最小改動量的原則,但是會造成一個隱形的私有開發包,一旦架構再次進行spring版本升級,本次的升級操作無法平滑過渡,這種潛規則式的改造方式,需要通過口傳心授的方式進行知識的傳遞,其實在一定程度上給後來的開發人員埋了一個不大不小的坑。
第二種方法將系統的依賴變更提現在pom檔案的依賴變化,雖然解決了升級產生的潛規則,但改造週期、測試周期都比較長。因此需要升級者權衡,如果工期緊張,而後續又有持續的改進升級計劃,第一種方式可以作為一種臨時的高效過渡方案,當有較充足的資源時,可以採用第二種方式,徹底將問題解決掉。
下面我們詳細介紹下spring4.0與ibatis的整合,便於大家在升級框架的過程中進行參考:
1、為方便說明,我們新建一個工程,來演示spring與mybatis的整合,新建工程:webinst,結構如下:
D:. └─src ├─main │ ├─java │ │ └─com │ │ └─myteay │ │ └─common │ │ └─dal │ │ └─dinner │ │ ├─dao │ │ ├─dataobject │ │ ├─exec │ │ └─ibatis │ ├─resources │ │ ├─META-INF │ │ │ └─spring │ │ └─sqlmap │ │ └─goods │ └─webapp │ └─WEB-INF └─test └─java └─com └─myteay └─myibatis
工程樹說明:
- dao路徑下用於存放定義的mybatis資料庫操作介面
- dataobject路徑下用於存放資料模型
- ibatis路徑下用於存放資料庫操作介面的實現
- exec用於執行相關測試驗證程式碼
- META-INF/spring路徑下存放當前工程的spring配置
- sqlmap路徑下存放mybatis相關配置檔案
- WEB-INF路徑下存放工程相關基礎配置如:applicationContext.xml、log4j.xml、web.xml等
本例以spring4.0.0.RELEASE版本為例來說明spring與mybatis的整合,pom檔案如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.myteay</groupId> <artifactId>webinst</artifactId> <version>0.0.1</version> <packaging>war</packaging> <name>webinst</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>org.apache.geronimo.specs</groupId> <artifactId>geronimo-servlet_2.4_spec</artifactId> <version>1.1.1</version> <scope>provwided</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-nop</artifactId> <version>1.7.25</version> </dependency> <!-- zxing --> <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.0.0</version> </dependency> <!-- mysql dependency start --> <dependency> <groupId>org.mysql</groupId> <artifactId>mysql-connector-java-commercial</artifactId> <version>5.1.33</version> </dependency> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.2.1</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.2</version> </dependency> <!-- mysql dependency end --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.1</version> </dependency> <!-- spring dependency start --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>4.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>4.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>4.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-oxm</artifactId> <version>4.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>4.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>4.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.0.0.RELEASE</version> </dependency> <!-- spring dependency end --> <!-- unit test start --> <dependency> <groupId>jmock</groupId> <artifactId>jmock</artifactId> <version>1.2.0</version> </dependency> <dependency> <groupId>jmock</groupId> <artifactId>jmock-cglib</artifactId> <version>1.2.0</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- unit test end --> <dependency> <groupId>org.apache.mina</groupId> <artifactId>mina-core</artifactId> <version>2.0.4</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet</artifactId> <version>1.2.0</version> </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.2</version> </dependency> <dependency> <groupId>org.apache.ibatis</groupId> <artifactId>ibatis-sqlmap</artifactId> <version>2.3.4.726</version> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging-api</artifactId> <version>1.1</version> </dependency> <dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> <version>1.7.0</version> </dependency> <dependency> <groupId>commons-configuration</groupId> <artifactId>commons-configuration</artifactId> <version>1.5</version> </dependency> <dependency> <groupId>commons-jelly</groupId> <artifactId>commons-jelly</artifactId> <exclusions> <exclusion> <groupId>servletapi</groupId> <artifactId>servletapi</artifactId> </exclusion> </exclusions> <version>1.0-RC1</version> </dependency> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.1</version> </dependency> <dependency> <groupId>commons-digester</groupId> <artifactId>commons-digester</artifactId> <version>1.8</version> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.3</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>commons-discovery</groupId> <artifactId>commons-discovery</artifactId> <version>0.4</version> </dependency> <dependency> <groupId>commons-pool</groupId> <artifactId>commons-pool</artifactId> <version>1.3</version> </dependency> <dependency> <groupId>commons-httpclient</groupId> <artifactId>commons-httpclient</artifactId> <version>3.0</version> </dependency> <dependency> <groupId>commons-jexl</groupId> <artifactId>commons-jexl</artifactId> <version>1.1</version> </dependency> <dependency> <groupId>nekohtml</groupId> <artifactId>nekohtml</artifactId> <version>0.9.5</version> </dependency> <dependency> <groupId>org.w3c.css</groupId> <artifactId>sac</artifactId> <version>1.3</version> </dependency> <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>jdom</groupId> <artifactId>jdom</artifactId> <version>1.0</version> </dependency> <dependency> <groupId>xerces</groupId> <artifactId>xerces</artifactId> <version>2.4.0</version> </dependency> <dependency> <groupId>xerces</groupId> <artifactId>xercesImpl</artifactId> <version>2.6.2</version> </dependency> <dependency> <groupId>com.thoughtworks.xstream</groupId> <artifactId>xstream</artifactId> <version>1.2.1</version> </dependency> <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-all</artifactId> <version>1.6.4</version> </dependency> <dependency> <groupId>org.antlr</groupId> <artifactId>antlr</artifactId> <version>3.1.3</version> </dependency> <dependency> <groupId>org.antlr</groupId> <artifactId>antlr-runtime</artifactId> <version>3.1.3</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3</version> </dependency> <!-- fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.28</version> </dependency> <!-- log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version> </dependency> <!--javamail--> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version> </dependency> <!--velocity--> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity</artifactId> <version>1.6.2</version> </dependency> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-tools</artifactId> <version>2.0</version> </dependency> </dependencies> <build> <finalName>webinst</finalName> <plugins> <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> <version>6.1.26</version> <configuration> <scanIntervalSeconds>3</scanIntervalSeconds> <connectors> <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector"> <port>80</port> </connector> </connectors> <scanTargetPatterns> <scanTargetPattern> <directory>src/main/webapp/WEB-INF</directory> <excludes> <exclude>**/*.jsp</exclude> </excludes> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> </scanTargetPattern> </scanTargetPatterns> </configuration> </plugin> </plugins> </build> </project>
說明:
- pom中增加了對jetty的依賴,這樣可以方便我們後面的測試驗證
- 為方便演示,增加了資料庫操作相關jar依賴
- 本例中已mybatis3.4.2為目標整合版本
其中對mybatis的關鍵依賴如下:
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.2</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.1</version> </dependency>
對spring的關鍵依賴如下:
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>4.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>4.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>4.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-oxm</artifactId> <version>4.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>4.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>4.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.0.0.RELEASE</version> </dependency>
其他依賴為本人框架升級需要用到的,各位可以忽略。
下面開始進行工程完善:
1、定義資料模型(建資料庫表的過程這裡省略):
/**
* Myteay.com Inc.
* Copyright (c) 2015-2016 All Rights Reserved.
*/
package com.myteay.common.dal.dinner.dataobject;
import java.io.Serializable;
import java.util.Date;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
/**
* 商品資訊資料模型
*
* @author Administrator
* @version $Id: GoodsInfoDO.java, v 0.1 2016年3月5日 上午12:28:53 Administrator Exp $
*/
public class GoodsInfoDO implements Serializable {
/** serialVersionUID */
private static final long serialVersionUID = 4624303532159349944L;
/** ID流水號 */
private String id;
/** 店鋪流水號 */
private String shopId;
/** 圖片地址 */
private String picAddr;
/** 商品標題 */
private String goodsTitle;
/** 價格 */
private String price;
/** 備註 */
private String summary;
/** 上架時間 */
private Date gmtCreated;
/** 最後修改時間 */
private Date gmtModified;
/**
* Getter method for property <tt>id</tt>.
*
* @return property value of id
*/
public String getId() {
return id;
}
/**
* Setter method for property <tt>id</tt>.
*
* @param id value to be assigned to property id
*/
public void setId(String id) {
this.id = id;
}
/**
* Getter method for property <tt>shopId</tt>.
*
* @return property value of shopId
*/
public String getShopId() {
return shopId;
}
/**
* Setter method for property <tt>shopId</tt>.
*
* @param shopId value to be assigned to property shopId
*/
public void setShopId(String shopId) {
this.shopId = shopId;
}
/**
* Getter method for property <tt>picAddr</tt>.
*
* @return property value of picAddr
*/
public String getPicAddr() {
return picAddr;
}
/**
* Setter method for property <tt>picAddr</tt>.
*
* @param picAddr value to be assigned to property picAddr
*/
public void setPicAddr(String picAddr) {
this.picAddr = picAddr;
}
/**
* Getter method for property <tt>goodsTitle</tt>.
*
* @return property value of goodsTitle
*/
public String getGoodsTitle() {
return goodsTitle;
}
/**
* Setter method for property <tt>goodsTitle</tt>.
*
* @param goodsTitle value to be assigned to property goodsTitle
*/
public void setGoodsTitle(String goodsTitle) {
this.goodsTitle = goodsTitle;
}
/**
* Getter method for property <tt>price</tt>.
*
* @return property value of price
*/
public String getPrice() {
return price;
}
/**
* Setter method for property <tt>price</tt>.
*
* @param price value to be assigned to property price
*/
public void setPrice(String price) {
this.price = price;
}
/**
* Getter method for property <tt>summary</tt>.
*
* @return property value of summary
*/
public String getSummary() {
return summary;
}
/**
* Setter method for property <tt>summary</tt>.
*
* @param summary value to be assigned to property summary
*/
public void setSummary(String summary) {
this.summary = summary;
}
/**
* Getter method for property <tt>gmtCreated</tt>.
*
* @return property value of gmtCreated
*/
public Date getGmtCreated() {
return gmtCreated;
}
/**
* Setter method for property <tt>gmtCreated</tt>.
*
* @param gmtCreated value to be assigned to property gmtCreated
*/
public void setGmtCreated(Date gmtCreated) {
this.gmtCreated = gmtCreated;
}
/**
* Getter method for property <tt>gmtModified</tt>.
*
* @return property value of gmtModified
*/
public Date getGmtModified() {
return gmtModified;
}
/**
* Setter method for property <tt>gmtModified</tt>.
*
* @param gmtModified value to be assigned to property gmtModified
*/
public void setGmtModified(Date gmtModified) {
this.gmtModified = gmtModified;
}
/**
* @see java.lang.Object#toString()
*/
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
}
}
2、定義DAO介面
/**
* Danlley Wei (mailto://[email protected])
* Copyright (c) 2005-2017 All Rights Reserved.
*/
package com.myteay.common.dal.dinner.dao;
import java.util.List;
import com.myteay.common.dal.dinner.dataobject.GoodsInfoDO;
/**
*
* @author danlley([email protected])
* @version $Id: GoodsInfoDAO.java, v 0.1 2017年4月3日 下午5:19:11 danlley([email protected]) Exp $
*/
public interface GoodsInfoDAO {
public List<GoodsInfoDO> findAll();
}
相關推薦
整合ibatis的spring工程升級到spring4.0實操手冊
Spring4及已經的版本放棄了對ibatis的整合支援,那有什麼辦法可以將自己的框架遷移升級到spring4呢。 我這裡有2個辦法可供參考: 1、改造spring-orm包: A、首先從spring-orm的jar包中將ibatis相關的class檔案及包結構全部複製出來,以備後用。
【實操手冊】如何把一場直播錄製下來?
許多使用者使用直播服務時,需要把正在直播的視訊錄製下來進行儲存或方便後續的回看。為了滿足使用者需求,阿里雲視訊直播服務提供了直播錄製功能,本文將對這兩種形式的錄製方法進行簡單介紹。 一、按場景錄製 針對不同的場景進行錄製配置 • 按域名、AppName、StreamNam
Linux+Nginx+Supervisor部署ASP.NET Core實操手冊
環境準備 nsh 托管 運行 wid 裝包 width tor 安裝 一、課程介紹 在上一節課程《ASP.NET Core托管和部署Linux實操演練手冊》中我們學過net core的部署方式多樣性和靈活性。我們通過遠程工具輸入dotnet 程序集名稱.dll的方式運
GitBook安裝部署實操手冊
前言 GitBook是一個基於Node.js的命令列工具,可使用Git和Markdown來編寫文件,讚譽太多,不再贅述。 Node.js 下載安裝包 cd /tmp wget https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz
Win7 安裝appscan9.0.3.10(可升級)實操流程
Win10不能很好的相容appscan,建議使用者用win7系統安裝appscan 寫於:2018.12.2 IBM Security AppScan Standard 可通過自動執行應用安全漏洞測試,幫助最大限度地保護 Web 應用免遭攻擊、降低昂貴的資料洩露風險。它使您能夠在部署應用之前對其進行測試,
Spring4.0 整合Quartz2.2.1
mark apach ava class exp pack post 註入 針對 1.版本說明 Spring 4.0.0 Quartz 2.2.1 SpringMvc 4.0.0 2.Quartz依賴的jar包 <dependency> <grou
[CXF REST標準實戰系列] 二、Spring4.0 整合 CXF3.0,實現測試接口(轉)
strong print transport location nts bean query keyword tsig 轉自:[CXF REST標準實戰系列] 二、Spring4.0 整合 CXF3.0,實現測試接口 文章Points: 1、介紹RESTful架構風格
0成本漲粉過萬詳細復盤,新手也可100%實操上手!
負責 indent 邏輯 用戶體驗 關鍵詞 盈利 pac coo 覆蓋 我相信,在此之前你已經看過很多“0 成本漲粉”教程,但今天分享的“測試題漲粉”,你一定是第一次接觸。雖然比不上“培訓大師們”動不動就日漲 10 萬粉的“強勢”,但是我能做到 —— 小白看完立即能上手
C++:將C++工程從VC6.0工程升級到VS2017所遇到的程式碼不相容問題集合
一、errorC2440:訊息相應函式型別不能轉化 問題描述 VS2017編譯提示以下兩個問題: (1)errorC2440 “static_cast”: 無法從“UINT (__thiscall CSizingControlBar::* )(CPoint)”轉換為
【從0開始 獨立完成企業級Java電商網站開發】開發環境安裝與配置講解、實操
1. 作業系統 虛擬機器: parallels或者vmware fusion 下載地址:https://pan.baidu.com/s/1JxVDhY0Ei9T2suDeLNmFug Linux : centos6.8 64bit 下載地址: http://a
升級xcode10.0後,編譯原有正常工程遇到的坑
一大早上看到可以升級xcode10,心情美美噠。然而升級完,開始編譯原有正常工程,卻報錯了。 提示有重複的檔案。 問題1: Multiple commands produce '/Users/wmh/Library/Developer/Xcode/DerivedData
Firefox_64.0 中selenium ide_3.2.0的使用教程(實操)
寫於:2018.12.31 一、安裝selenium IDE 下載和安裝這裡推薦參考文章:https://blog.csdn.net/echizen_520/article/details/65444396 二、使用selenium IDE建立新指令碼 (一)建立新指令碼 1、點
Eclipse 引入 dubbo報錯,無法與 Spring4.0 整合的異常修復
在第一次將dubbo整合進當前專案時,發現無法使用。網上有很多類似帖子,嘗試了多好,將類似答案進行了整理,得出了可以解決自己問題的答案。不能保證完全解除此異常,但對我是有用的 涉及軟體與技術
mybatis3.2.6整合spring4.0和springMVC4.0開發
1. 新建專案,匯入jar包 在eclipse/myeclipse上新建一個web專案,匯入如下圖所示的jar包,關於jar包的整合資源可到http://download.csdn.net/detail/qwe6112071/9467007進行下載 如果
使用Jenkins與Docker持續整合與釋出NetCore專案(實操篇)
# 使用Jenkins與Docker持續整合與釋出NetCore專案(教程一) 原文地址:[https://www.cnblogs.com/Jackyye/p/12588182.html](https://www.cnblogs.com/Jackyye/p/12588182.html) ## 基本環境 該教
spring4.0.0的配置和使用
target new static context odin bean 數據庫 getbean 工廠 1.創建一個javaproject或者webproject,我創建的時webproject,編譯器用的時myeclipse2013 2.在lib文件夾以下倒入sprin
Android Studio升級到0.8.1後怎樣設置字體大小?
class 兩個 設置 span 技術 ng- alt -s android 升級到0.8.1後。打開設置字體大小頁面。你會發現無論是Default還是Darcula,都不同意你改變字體的大小。事實上這個是由於這兩個模式是Android Studio自帶模式,所以不同意
Spring4.0從入門到精通視頻教程 - 1. Spring的特點
spring4.0從入門到精通視頻教程 java 第三方 開發 輕量級:Spring 是非侵入性的 - 基於 Spring 開發的應用中的對象可以不依賴於 Spring 的 API依賴註入(DI --- dependency injection、IOC)面向切面編程(AOP --- aspec
Spring4.0從入門到精通視頻教程 - 2. 安裝SPRING TOOL SUITE
spring4.0從入門到精通視頻教程 spring tool suite 1、找到與eclipse版本配套的SPRING TOOL SUITE。http://spring.io/tools/sts/all2、Help -> Install New Software...3、Click Add.
Nexus設備升級5.0方法
trac 使用 div nexus fas space 相關 pan ref 1. 從該頁面為您的設備下載適當的系統映像。然後將它解壓縮到一個安全的文件夾。 2. 通過 USB 連接到您的計算機。 3. 使用下列的方法,在fastboot mode下啟動