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. Android(安卓)内存泄漏优化汇总
  2. JS判断客户端是否是iOS或者Android
  3. 《淘宝客户端 for Android》项目实战 html webkit android css3
  4. android:layout_gravity 和 android:gravity 的区别
  5. android:layout_gravity和android:gravity的区别
  6. android:layout_gravity 和 android:gravity 的区别
  7. android:layout_gravity和android:gravity的区别
  8. android:layout_gravity和android:gravity的区别
  9. android:layout_gravity 和 android:gravity 的区别

随机推荐

  1. Android(安卓)AIDL服务学习笔记
  2. 实现简易的android 直播技术
  3. Android活动Acitivity启动模式之singleTo
  4. Android高手进阶教程(十一)之----Android
  5. Qt on Android(安卓)Episode 1(翻译)
  6. Android(安卓)开机图片/文字/动画 修改
  7. Android中使用imageviewswitcher 实现图
  8. unity发布android流程
  9. Android(安卓)手机关机流程及异常分析
  10. 如何学画素描?简单动物素描画法