Spring For Android是Spring框架的一个扩展,其主要目的在乎简化Android本地应用的开发,这其中包括了你可以使用该项目提供的 RestTemplate来为你的Android客户端提供REST服务,另外该项目还提供了跟其它诸如Twitter和Facebook等社交网络的集 成与OAuth授权客户端等等。关于SPRING FOR ANDROID的一些详细说明与应用,可参考官方说明文档:http://static.springsource.org/spring- android/docs/1.0.x/reference/html/overview.html

概念性质的东西我也就不再说明了,我们直接从该子项目的官方Sample开始学习吧,简单且直接:

示例程序位于:https://github.com/SpringSource/spring-android-samples

如果你已经安装了GitHub,那你可直接在指定的文件夹下输入

  1. git clone https://github.com/SpringSource/spring-android-samples.git

从而获取到源代码(具体的GitHub使用细节可参考Android源码获取 )。

或者干脆,你就直接老办法Download as Zip。

代码拿下来以后,可以看到包含四个小项目,本博文就以spring-android-basic-auth作为我们的学习之旅,之所以选择这个示例,是因为它麻雀虽小但五脏俱全。非常的具有代表性。

打开Eclipse分别导入maven项目spring-android-basic-auth的client/server,当然前提是,你确保你已经 成功安装了Android的SDK,Eclipse的插件ADT,以及Maven的Eclipse插件m2eclipse,OK,导入项目:

因为需要从网上下载项目关联的jar包,所以项目导入速度取决于您当前的网络环境。导入项目我想你肯定或多或少的会遇到一点点的小麻烦,我只能在这里列举一些我在导入项目所遇到的问题仅供大家参照

1、我们现在是要在Eclipse上利用Maven来编译管理Android项目,所以我们需要安装Android Configurator这个Maven Android插件,提供了针对ADT的Maven依赖管理的能力,这个插件使得

M2E、ADT以及Maven Android Plugin这三个插件在Eclipse内部能够很良好的协调工作。该插件的安装可通过Eclipse
Marketplace...来安装。我使用的是Eclipse Indigo版本,直接在Help中找到Eclipse
Marketplace..,点击,输入:

Android M2E,如下图所示:

点击“install”,如下图全选:

安装完成后,重启Eclipse,搞定。

2、spring-android-basic-auth的server代码解析:

2.1、导入Maven项目,我的工程地址是:G:\source\spring-android-samples\spring-android-
basic-auth\server,导入到Eclipse中,该工程包含了Spring3.0很多最新的功能,同时也包含了Spring
Security。我们来看看该工程主要包含哪些内容,我们首先打开web.xml,重点看两个新的配置:

  1. <!-- Java-based annotation-driven Spring container definition -->
  2. <context-param>
  3. <param-name>contextClass</param-name>
  4. <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
  5. </context-param>
  6. <!-- Location of Java @Configuration classes that configure the components
  7. that makeup this application -->
  8. <context-param>
  9. <param-name>contextConfigLocation</param-name>
  10. <param-value>org.springframework.android.basicauth.config</param-value>
  11. </context-param>

第一个context-param,指定AnnotationConfigWebApplication加载
WebApplicatioinContext,该类是Spring3.0引入的,提供了基于注解的方式代替XML文件配置,第二个context-
param则指定了AnnotationConfigWebApplicationContext扫描以@Configuration配置的类的路径。接
着我们来看看config包下的内容

2-2、org.springframework.android.basicauth.config包下的类查看:

该包下包含三个ComponentConfig、SecurityConfig、WebConfig配置类

1)ComponentConfig:

  1. @Configuration
  2. @ComponentScan(basePackages="org.springframework.android.basicauth",
  3. excludeFilters={ @Filter(Configuration.class)} )
  4. public class ComponentConfig {
  5. }

@Configuration注解,该注解表明一个类声明了一个或多个Bean方法且可以被Spring窗口在运行时生成Bean的定义和服务请求。这个注解就类型于我们以前开发定义的Spring XML文件

@ComponentScan,这里用到了两个属性,分别为basePackages和excludeFilters,不解释,类似如下代码:

  1. <context:component-scan base-package="org.springframework.android.basicauth" >
  2. <context:exclude-filter type="annotation" expression="org.springframework.context.annotation.Configuration"/>
  3. </context:component-scan>

也就是Spring在扫描组件实体化的时候,不需要实例化带有Configuration的注解。

2)SecurityConfig:

  1. @Configuration
  2. @ImportResource("classpath:security.xml")
  3. public class SecurityConfig {
  4. }

我们就只看ImportResource,引入类路径下的security.xml文件,类似Spring
XML的<import/>标签功能,通过AnnotationConfigApplicationContext加载并解析实例化。
security.xml文件我就不在此列出了,详细见工程包。主要就是定义了系统的权限,只有输入用户名/密码:roy/spring才能登入系统。

3)WebConfig:

  1. @Configuration
  2. @EnableWebMvc
  3. public class WebConfig extends WebMvcConfigurerAdapter {
  4. @Override
  5. public void addViewControllers(ViewControllerRegistry registry) {
  6. registry.addViewController("/").setViewName("index");
  7. }
  8. @Bean
  9. public ViewResolver viewResolver() {
  10. InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
  11. viewResolver.setPrefix("/WEB-INF/views/");
  12. viewResolver.setSuffix(".jsp");
  13. return viewResolver;
  14. }
  15. }

这个类呢主要的就是Spring MVC的配置功能,@EnableWebMvc与@Configuration一起使用,通过继承WebMvcConfigurerAdapter这个适配器,然后继承该类的私有方法,从而达到配置Spring MVC的目的。

viewResolver()方法的功能,类似Spring XML配置文件如下:

  1. <!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
  2. <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  3. <beans:property name="prefix" value="/WEB-INF/views/" />
  4. <beans:property name="suffix" value=".jsp" />
  5. </beans:bean>

就是解析Spring MVC请求的页面映射到/WEB-INF/views/包下的,所有后缀名为.jsp的文件。

addViewControllers该方法功能类似

  1. <mvc:view-controller path="/" view-name="index"/>

也就是默认页面指向WEB-INF/views/index.jsp文件。

3、布署spring-android-basic-auth项目到Tomcat服务器:

首先在tomcat服务器的%TOMCAT_PATH%/conf/tomcat-users.xml

中添加一个拥有管理员权限访问服务器的用户。例如:

  1. <?xml version='1.0' encoding='utf-8'?>
  2. <tomcat-users>
  3. <role rolename="manager"/>
  4. <user username="admin" password="admin" roles="manager"/>
  5. </tomcat-users>

这个意思是,添加一个名为manager的用户用色,然后为这个用户角色设定用户名和密码为admin。这样,我们在浏览器里输入http://localhost:8080/manager,就可输入上述提供的用户名和密码来操作Tomcat的一些项目管理。

既然我们需要通过Maven把项目布置到Tomcat服务器,那我们是不是要将Maven与Tomcat建立一个关联关系呢,所以在%MAVEN_PATH%/conf/settings.xml的文件中,添加如上所示一致的用户权限信息:

  1. <servers>
  2. <server>
  3. <id>TomcatServer</id>
  4. <username>admin</username>
  5. <password>admin</password>
  6. </server>
  7. </servers>

上述代码就是为了连接Tomcat的Web服务器而设置的权限配置信息,id必须唯一。

有了这个服务连接配置信息之后,那我们怎么办呢,有了就得要用啊!如何用?!发布哪个项目那我们就得在那个发布项目里添加关联发布了。这就需要我们在项目
的pom.xml里添加Maven-Tomcat plugin,来将项目关联上Tomcat服务,具体配置如下所示:

  1. <plugin>
  2. <groupId>org.codehaus.mojo</groupId>
  3. <artifactId>tomcat-maven-plugin</artifactId>
  4. <configuration>
  5. <url>http://localhost:8080/manager</url>
  6. <server>TomcatServer</server>
  7. <path>/spring-android-basic-auth-server</path>
  8. </configuration>
  9. <version>1.1</version>
  10. </plugin>

启动Tomcat服务器,到指定目录输入mvn
tomcat:deploy,即可完成spring-android-basic-auth项目Server的发布。这段配置就是告诉maven,将我们
的项目以路径spring-android-basic-auth-server通过TomcatServer的配置信息发布到我们的本地Tomcat服
务。这个过程实际上就是利用Tomcat的管理员权限用发布*.war的文件到服务器里。

这些服务器端的代码就算是讲解完成了,下一节我们来继续Android客户端的项目学习。附件附上包含客户端的项目源代码。

Spring For Android初体验的更多相关文章

  1. Spring boot缓存初体验

    spring boot缓存初体验 1.项目搭建 使用MySQL作为数据库,spring boot集成mybatis来操作数据库,所以在使用springboot的cache组件时,需要先搭建一个简单的s ...

  2. 215.Spring Boot+Spring Security:初体验

    [视频&交流平台] SpringBoot视频:http://t.cn/R3QepWG Spring Cloud视频:http://t.cn/R3QeRZc SpringBoot Shiro视频 ...

  3. Spring Cloud Alibaba 初体验(六) Seata 及结合 MyBatis 与 MyBatis-Plus 的使用

    一.下载与运行 本文使用 Seata 1.1.0:https://github.com/seata/seata/releases Windows 环境下双击 bin/seata-server.bat ...

  4. Mono for Android—初体验之“电话拨号器”

    1.Main.axml文件: <?xml version="1.0" encoding="utf-8"?><LinearLayout xmln ...

  5. Visual Studio Emulator for Android 初体验

    Visual Studio Emulator for Android已经推出一段时间了,但一直没有用过.前两天下载安装用了下,整体感觉比谷歌自带的模拟器强多了.Visual Studio Emulat ...

  6. Android初体验

    上文提到使用genymotion来运行android项目,结果却是令人失望,我这边使用的是代理账户,尽管我在Setting中配置了代理,还是不能登录我注册的账户,郁闷,于是本文采用的是我自己的手机作为 ...

  7. android初体验——HelloWord

    一.新建项目: 打开 eclipse ,选择File – New – Android Application Project 输入项目名称,程序名称,包名. 包名不能重复,它是项目的唯一标示,我理解为 ...

  8. Spring Data JPA 初体验

    一,JPA相关的概念 JPA概述 全称是:JavaPersistence API.是SUN公司推出的一套基于ORM的规范. Hibernate框架中提供了JPA的实现. JPA通过JDK 5.0注解或 ...

  9. Android初体验之Monkey和MonkeyRunner

    原文地址https://blog.csdn.net/mad1989/article/details/38087737 Monkey 什么是Monkey Monkey是Android中的一个命令行工具, ...

随机推荐

  1. 告别无止境的增删改查:Java代码生成器

    对于一个比较大的业务系统,我们总是无止境的增加,删除,修改,粘贴,复制,想想总让人产生一种抗拒的心里.那有什么办法可以在正常的开发进度下自动生成一些类,配置文件,或者接口呢?   有感于马上要做个比较 ...

  2. Haxe数据类型

    以下是Haxe里面的一些数据类型 基本类型 空特性 类 枚举 匿名结构 方法 动态 抽象 1. 基本类型Bool, Float, Int 2. 空特性由于Haxe可以被编译为各种不同的target,不 ...

  3. 你听说过PHP 的面向方面编程吗?

    面向方面编程(AOP)对于PHP来说是一个新的概念.现在PHP对于 AOP 并没有官方支持,但有很多扩展和库实现了这个特性.本课中,我们将使用 Go! PHP library 来学习 PHP 如何进行 ...

  4. Learning Lua Programming (2) Lua编程基础

    开始学习Lua编程,首先从一些简单的语法开始. 一.编辑环境 下面推荐一个Lua编程的IDE,感觉是很强大的.ZeroBrane Studio,windows平台,mac平台都有.点击打开链接  官方 ...

  5. Android新版本SDK打开旧版本项目报错解决

    1.Description Resource Path Location Type Unable to resolve target 'android-19 解决:打开project.properti ...

  6. 【问底】徐汉彬:Web系统大规模并发——电商秒杀与抢购

    [导读]徐汉彬曾在阿里巴巴和腾讯从事4年多的技术研发工作,负责过日请求量过亿的Web系统升级与重构,目前在小满科技创业,从事SaaS服务技术建设. 电商的秒杀和抢购,对我们来说,都不是一个陌生的东西. ...

  7. 真心崩溃了,oracle安装完成后居然没有tnsnames.ora和listener.ora文件

    problem: oracle  11  r2  64位安装完成后NETWORK/ADMIN目录下居然没有tnsnames.ora和listener.ora文件 solution: 问题是之前安装了另 ...

  8. WebServices生成发布过程及常见问题的解决方法

    春夏秋冬走健康之路看四季养生网 健康饮食 养生问题 母婴保健 养生小常识 3.下一步,我们需要将Myservice文件夹拷贝到C:\Inetpub\wwwroot目录下(重要).如下图所示  然后依次 ...

  9. Struts2配置

    1.      设定server a)      window– preferences – myeclipse – servers – tomcat – 6.x b)      选择tomcat h ...

  10. Java [Leetcode 190]Reverse Bits

    题目描述: everse bits of a given 32 bits unsigned integer. For example, given input 43261596 (represente ...