Spring for Android是什么?

  • Spring for Android 是一个Spring框架的扩展,目标是简化本地Android应用开发。

  • 特性:
    一、一个针对Android的REST客户端
    二、对于访问安全API的一个认证的支持

Spring for Android能为开发者带来什么?

就笔者而言,目前针对特性一体会到的好处主要有两点:

  • 1、REST客户端调用模板:方便与提供REST服务的服务端进行交互。

  • 2、JSON&XML解析:目前,客户端与服务端进行数据交换的格式基本全部采用JSON或XML,Spring for Android可以方便的进行JSON或XML数据的解析。

代码示例

......    private class DownloadStateTask extends AsyncTask<MediaType, Void, State> {        private String abbreviation;        @Override        protected void onPreExecute() {            showLoadingProgressDialog();            // retrieve the abbreviation from the EditText field            EditText editText = (EditText) findViewById(R.id.edit_text_abbreviation);            abbreviation = editText.getText().toString();        }        @Override        protected State doInBackground(MediaType... params) {            try {                if (params.length <= 0) {                    return null;                }                MediaType mediaType = params[0];                // The URL for making the GET request                final String url = getString(R.string.base_uri) + "/state/{abbreviation}";                // Set the Accept header for "application/json" or "application/xml"                HttpHeaders requestHeaders = new HttpHeaders();                List<MediaType> acceptableMediaTypes = new ArrayList<MediaType>();                acceptableMediaTypes.add(mediaType);                requestHeaders.setAccept(acceptableMediaTypes);                // Populate the headers in an HttpEntity object to use for the request                HttpEntity<?> requestEntity = new HttpEntity<Object>(requestHeaders);                // Create a new RestTemplate instance                RestTemplate restTemplate = new RestTemplate();                if (mediaType.equals(MediaType.APPLICATION_JSON)) {                    restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());                } else if (mediaType.equals(MediaType.APPLICATION_XML)) {                    restTemplate.getMessageConverters().add(new SimpleXmlHttpMessageConverter());                }                // Perform the HTTP GET request                ResponseEntity<State> responseEntity = restTemplate.exchange(url, HttpMethod.GET, requestEntity,                        State.class, abbreviation);                // Return the state from the ResponseEntity                return responseEntity.getBody();            } catch (Exception e) {                Log.e(TAG, e.getMessage(), e);            }            return null;        }        @Override        protected void onPostExecute(State state) {            dismissProgressDialog();            showState(state);        }    }
  • RestTemplate类是Spring for Android RestTemplate库的核心。从概念上来说,它类似于其他Spring项目中的模板类。RestTemplate的行为是通过提供回调方法并配置HttpMessageConverter(用于将对象序列化为HTTP请求体以及将响应反序列化为对象)来定制的。在创建新的RestTemplate实例时,构造方法会创建出几个支持对象来实现RestTemplate的功能。

  • 对象到JSON的序列化:在Spring for Android RestTemplate中,对象到JSON的序列化需要使用第三方的JSON映射库。Spring for Android支持两个库,一个是Jackson JSON Processor,另一个是Google Gson。虽然Jackson是个众所周知的JSON解析库,但Gson库却更小,这样在打包时Android应用的体积就会更小。
    代码示例如下:

利用Jackson库:

restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());

利用Gson库:

restTemplate.getMessageConverters().add(new GsonHttpMessageConverter());
  • 对象到XML的序列化也需要使用第三方的XML映射库。Simple XML serializer用于提供该序列化功能。 代码示例如下:
restTemplate.getMessageConverters().add(new SimpleXmlHttpMessageConverter());

更多相关文章

  1. JS判断客户端是否是iOS或者Android
  2. 《淘宝客户端 for Android》项目实战 html webkit android css3
  3. 【Android增量升级系列_01】 浅谈Android增量更新客户端的实现方
  4. Android Jni代码示例讲解
  5. Android 多线程之synchronized锁住的是代码还是对象(二)
  6. Android Handler机制5之Message简介与消息对象对象池
  7. 【Android】socket通信【客户端访问】
  8. 来往 android客户端发布
  9. Android 统计图表引擎 AChartEngine(三) - 示例源码折线图、饼图

随机推荐

  1. 在Ubuntu中和Android中添加开机自启动的
  2. Android学习系列之一
  3. Android异步1:Thread+Handler更新UI
  4. Android程序开发0基础教程(一)
  5. EditText设置更多文字为省略号
  6. android模拟器管理和使用SD卡
  7. 计算器——第一个Android小项目
  8. 第一行代码(第二版)自学笔记之第一篇:Androi
  9. Android安装环境搭建
  10. Android入门教程(四)之------Android工程