Spring For Android初体验
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,那你可直接在指定的文件夹下输入
- 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,重点看两个新的配置:
- <!-- Java-based annotation-driven Spring container definition -->
 - <context-param>
 - <param-name>contextClass</param-name>
 - <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
 - </context-param>
 - <!-- Location of Java @Configuration classes that configure the components
 - that makeup this application -->
 - <context-param>
 - <param-name>contextConfigLocation</param-name>
 - <param-value>org.springframework.android.basicauth.config</param-value>
 - </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:
- @Configuration
 - @ComponentScan(basePackages="org.springframework.android.basicauth",
 - excludeFilters={ @Filter(Configuration.class)} )
 - public class ComponentConfig {
 - }
 
@Configuration注解,该注解表明一个类声明了一个或多个Bean方法且可以被Spring窗口在运行时生成Bean的定义和服务请求。这个注解就类型于我们以前开发定义的Spring XML文件
@ComponentScan,这里用到了两个属性,分别为basePackages和excludeFilters,不解释,类似如下代码:
- <context:component-scan base-package="org.springframework.android.basicauth" >
 - <context:exclude-filter type="annotation" expression="org.springframework.context.annotation.Configuration"/>
 - </context:component-scan>
 
也就是Spring在扫描组件实体化的时候,不需要实例化带有Configuration的注解。
2)SecurityConfig:
- @Configuration
 - @ImportResource("classpath:security.xml")
 - public class SecurityConfig {
 - }
 
我们就只看ImportResource,引入类路径下的security.xml文件,类似Spring
XML的<import/>标签功能,通过AnnotationConfigApplicationContext加载并解析实例化。
security.xml文件我就不在此列出了,详细见工程包。主要就是定义了系统的权限,只有输入用户名/密码:roy/spring才能登入系统。
3)WebConfig:
- @Configuration
 - @EnableWebMvc
 - public class WebConfig extends WebMvcConfigurerAdapter {
 - @Override
 - public void addViewControllers(ViewControllerRegistry registry) {
 - registry.addViewController("/").setViewName("index");
 - }
 - @Bean
 - public ViewResolver viewResolver() {
 - InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
 - viewResolver.setPrefix("/WEB-INF/views/");
 - viewResolver.setSuffix(".jsp");
 - return viewResolver;
 - }
 - }
 
这个类呢主要的就是Spring MVC的配置功能,@EnableWebMvc与@Configuration一起使用,通过继承WebMvcConfigurerAdapter这个适配器,然后继承该类的私有方法,从而达到配置Spring MVC的目的。
viewResolver()方法的功能,类似Spring XML配置文件如下:
- <!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
 - <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
 - <beans:property name="prefix" value="/WEB-INF/views/" />
 - <beans:property name="suffix" value=".jsp" />
 - </beans:bean>
 
就是解析Spring MVC请求的页面映射到/WEB-INF/views/包下的,所有后缀名为.jsp的文件。
addViewControllers该方法功能类似
- <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
中添加一个拥有管理员权限访问服务器的用户。例如:
- <?xml version='1.0' encoding='utf-8'?>
 - <tomcat-users>
 - <role rolename="manager"/>
 - <user username="admin" password="admin" roles="manager"/>
 - </tomcat-users>
 
这个意思是,添加一个名为manager的用户用色,然后为这个用户角色设定用户名和密码为admin。这样,我们在浏览器里输入http://localhost:8080/manager,就可输入上述提供的用户名和密码来操作Tomcat的一些项目管理。
既然我们需要通过Maven把项目布置到Tomcat服务器,那我们是不是要将Maven与Tomcat建立一个关联关系呢,所以在%MAVEN_PATH%/conf/settings.xml的文件中,添加如上所示一致的用户权限信息:
- <servers>
 - <server>
 - <id>TomcatServer</id>
 - <username>admin</username>
 - <password>admin</password>
 - </server>
 - </servers>
 
上述代码就是为了连接Tomcat的Web服务器而设置的权限配置信息,id必须唯一。
有了这个服务连接配置信息之后,那我们怎么办呢,有了就得要用啊!如何用?!发布哪个项目那我们就得在那个发布项目里添加关联发布了。这就需要我们在项目
的pom.xml里添加Maven-Tomcat plugin,来将项目关联上Tomcat服务,具体配置如下所示:
- <plugin>
 - <groupId>org.codehaus.mojo</groupId>
 - <artifactId>tomcat-maven-plugin</artifactId>
 - <configuration>
 - <url>http://localhost:8080/manager</url>
 - <server>TomcatServer</server>
 - <path>/spring-android-basic-auth-server</path>
 - </configuration>
 - <version>1.1</version>
 - </plugin>
 
启动Tomcat服务器,到指定目录输入mvn
tomcat:deploy,即可完成spring-android-basic-auth项目Server的发布。这段配置就是告诉maven,将我们
的项目以路径spring-android-basic-auth-server通过TomcatServer的配置信息发布到我们的本地Tomcat服
务。这个过程实际上就是利用Tomcat的管理员权限用发布*.war的文件到服务器里。
这些服务器端的代码就算是讲解完成了,下一节我们来继续Android客户端的项目学习。附件附上包含客户端的项目源代码。
Spring For Android初体验的更多相关文章
- Spring boot缓存初体验
		
spring boot缓存初体验 1.项目搭建 使用MySQL作为数据库,spring boot集成mybatis来操作数据库,所以在使用springboot的cache组件时,需要先搭建一个简单的s ...
 - 215.Spring Boot+Spring Security:初体验
		
[视频&交流平台] SpringBoot视频:http://t.cn/R3QepWG Spring Cloud视频:http://t.cn/R3QeRZc SpringBoot Shiro视频 ...
 - Spring Cloud Alibaba 初体验(六) Seata 及结合 MyBatis 与 MyBatis-Plus 的使用
		
一.下载与运行 本文使用 Seata 1.1.0:https://github.com/seata/seata/releases Windows 环境下双击 bin/seata-server.bat ...
 - Mono for Android—初体验之“电话拨号器”
		
1.Main.axml文件: <?xml version="1.0" encoding="utf-8"?><LinearLayout xmln ...
 - Visual Studio Emulator for Android 初体验
		
Visual Studio Emulator for Android已经推出一段时间了,但一直没有用过.前两天下载安装用了下,整体感觉比谷歌自带的模拟器强多了.Visual Studio Emulat ...
 - Android初体验
		
上文提到使用genymotion来运行android项目,结果却是令人失望,我这边使用的是代理账户,尽管我在Setting中配置了代理,还是不能登录我注册的账户,郁闷,于是本文采用的是我自己的手机作为 ...
 - android初体验——HelloWord
		
一.新建项目: 打开 eclipse ,选择File – New – Android Application Project 输入项目名称,程序名称,包名. 包名不能重复,它是项目的唯一标示,我理解为 ...
 - Spring Data JPA 初体验
		
一,JPA相关的概念 JPA概述 全称是:JavaPersistence API.是SUN公司推出的一套基于ORM的规范. Hibernate框架中提供了JPA的实现. JPA通过JDK 5.0注解或 ...
 - Android初体验之Monkey和MonkeyRunner
		
原文地址https://blog.csdn.net/mad1989/article/details/38087737 Monkey 什么是Monkey Monkey是Android中的一个命令行工具, ...
 
随机推荐
- PCL—低层次视觉—点云分割(基于凹凸性)
			
1.图像分割的两条思路 场景分割时机器视觉中的重要任务,尤其对家庭机器人而言,优秀的场景分割算法是实现复杂功能的基础.但是大家搞了几十年也还没搞定——不是我说的,是接下来要介绍的这篇论文说的.图像分割 ...
 - PCL—低层次视觉—点云分割(最小割算法)
			
1.点云分割的精度 在之前的两个章节里介绍了基于采样一致的点云分割和基于临近搜索的点云分割算法.基于采样一致的点云分割算法显然是意识流的,它只能割出大概的点云(可能是杯子的一部分,但杯把儿肯定没分割出 ...
 - 单交换机VLAN虚拟局域网划分
			
1.下载Cisco模拟器 Packet Tracer 是由Cisco公司发布的一个辅助学习工具,为学习CCNA课程的网络初学者去设计.配置.排除网络故障提供了网络模拟环境.学生可在软件的图形用户界面上 ...
 - 04-语言入门-04-Fibonacci数
			
地址: http://acm.nyist.net/JudgeOnline/problem.php?pid=13 描述 无穷数列1,1,2,3,5,8,13,21,34,55...称为Fibona ...
 - 字符设备 register_chrdev_region()、alloc_chrdev_region() 和 register_chrdev()
			
1. 字符设备结构体 内核中所有已分配的字符设备编号都记录在一个名为 chrdevs 散列表里.该散列表中的每一个元素是一个 char_device_struct 结构,它的定义如下: static ...
 - 8天学通MongoDB——第六天 分片技术
			
在mongodb里面存在另一种集群,就是分片技术,跟sql server的表分区类似,我们知道当数据量达到T级别的时候,我们的磁盘,内存 就吃不消了,针对这样的场景我们该如何应对. 一:分片 mong ...
 - Difference between 2>&-, 2>/dev/null, |&, &>/dev/null and >/dev/null 2>&1
			
Reference link: http://unix.stackexchange.com/questions/70963/difference-between-2-2-dev-null-dev-nu ...
 - tomcat发布web service教程
			
这几天一直在准备找工作,自学了关于web service的一些基本的内容,也遇到了不少问题.现在就把我自己学到的知识和大家分享一下,由于是初学,所以有什么错误的地方请大家帮忙指正,感激不尽~~!! 1 ...
 - hdu3037 Lucas定理
			
Lucas定理 Lucas(n,m,p)=c(n%p,m%p)* Lucas(n/p,m/p,p),其中lucas(n,m,p)=C(n,m)%p (这里的除号是整除) 证明——百度百科 题意:求n个 ...
 - bzoj1132
			
每次都选最左边的点,然后以这个点为原点 统计和这个点构成的三角形面积和 不难想到极角排序然后由叉积很容易求出 shl ; eps=1e-8; var i,j,k,m,n:longint; x,y:.. ...