本周 Spring 相关新闻,2011 年 9 月 20 日

工程 | Josh Long | 2011 年 9 月 20 日 | ...

欢迎回到“本周 Spring 相关新闻”的最新一期。本周我们有很多与 Spring Roo 相关的内容,因此,本着这种精神,我提议将今天命名为“Roo 日”,以纪念本周的汇总中所有精彩的 Roo 相关内容。

SpringSource 方面正全力以赴,因为大家都在为SpringOne 做准备。今年的展会令人兴奋,因为这将是CloudFoundry 首次参展,这意味着将会有大量关于 CloudFoundry 和 Spring 结合的内容,它们将成为无敌的组合。我迫不及待了!

  1. InfoQ 对 Spring Social 的负责人 Craig Walls 进行了采访,讨论了刚发布的 Spring Social 1.0。内容非常引人入胜!一旦采访勾起了您的兴趣,请务必尝试 Spring Social 的快速入门指南。

    Spring Social 在其他地方也获得了广泛的报道,包括adtmag.com 上这篇关于新发布的 1.0 版本文章

  2.  <LI> <a href = "http://www.springsource.org/node/3235">SpringSource Tool Suite 2.7.2 has been released.</a>  The new release features 
    	 support for vFabric tc Server 2.6,
    	support for Spring Roo 1.2.0.M1, and also updates  Mylyn to 3.6.2. Great stuff!
    	
     </li>
    
    <LI>
    	<a href = "http://blog.springsource.com/2011/09/14/spring-roo-1-2-0-m1-released/">Spring Roo 1.2.M1 released. 	</a>
    	The new release is a <EM>really</EM> exciting one.  There are some exciting <em>backoffice</em…

Spring Roo 1.2.0.M1 已发布

工程 | Alan Stewart | 2011年9月14日 | ...

Spring Roo团队很高兴地宣布我们的第一个1.2.0里程碑版本已发布。Roo 1.2.0.M1版本延续了Roo的愿景,即快速轻松地构建基于Spring的企业Java应用程序。我们倾听了社区的意见,并在该版本中包含了一些最受高度请求的功能。

  • 速度提高了十倍(!)。我们知道许多人正在将Roo用于非常大型的项目,因此我们继续关注Roo内部,以确保它在这种情况下也能平稳快速地运行。通过对性能分析、文件监控、磁盘I/O、XML模型和往返的关注,我们将Roo在大型基准项目上的性能提高了10倍。
  • 现在采用Apache许可。在Roo 1.0/1.1版本中,我们使用GPL许可来鼓励将Roo中进行的任何改进与社区共享。为了回应反馈,我们已转向Apache软件许可2(ROO-2253),因此您可以在商业和非商业项目中如何使用Roo方面拥有完全的灵活性。这还使Roo与大多数其他Spring项目保持一致。
  • 已迁移到GitHub。社交编码正在兴起,GitHub已成为开源代码管理的实际站点。我们很高兴将Roo的代码库迁移到GitHub,以便您可以轻松地派生它、进行更改并提交拉取请求。这将极大地简化接收来自社区的新贡献。请查看ROO-2708或访问https://github.com/SpringSource/spring-roo获取更多信息。
  • 仓库层灵活性。现在可以定义自己的仓库层方法,并在Roo管理的Web层、集成测试和数据按需机制中完全了解您的选择。这对于那些喜欢比Roo 1.0/1.1“Active Record”式模型更传统分层方法的人来说是一个重大进步。当然,支持早期方法的理念仍然存在,因此Roo仍然完全支持在实体中嵌入方便的Active Record风格方法。您可以在Pizza-Shop示例(请参阅分发包的/samples目录)和ROO-301中了解有关此新功能的更多信息。
  • 服务层。我们还决定解决另一个高度请求的社区功能:服务层支持。您现在可以轻松添加一个服务层(通过Roo的“service”命令),并让Roo管理的Web层、集成测试和数据按需功能使用它。自定义服务层也可以与自定义仓库同时使用,让您完全灵活地构建您喜欢的任何应用程序分层。您可以在ROO-340中阅读更多内容,Stefan Schmidt即将发布一篇博客提供更多详细信息。
  • 灵活的GWT支持。现在您可以跳过UI,只让Roo管理将您的RequestFactory类(EntityProxy、RequestContext和Locator)与您的域模型和服务层同步。以前GWT UI脚手架是强制性的,但在1.2.0.M1中,您可以更具选择性地决定Roo如何与您的项目集成。
  • MongoDB支持。无论您是Cloud Foundry用户,还是仅仅是Mongo的粉丝,我们现在都增加了将您的实体存储在MongoDB中的支持。Mongo是一个快速、支持分片、无模式的文档数据库,支持map-reduce,非常适合那些希望将noSQL与Roo一起使用的人。在ROO-2693中了解更多信息。
  • 数据库逆向工程(DBRE)多模式支持。Roo中最受欢迎的功能之一是DBRE支持,它不仅允许您从关系模式中搭建实体模型,还可以随着模式的变化自动维护该实体层。这采用了一种模式优先的开发方法,我们知道有用户在包含数百个表的项目中使用DBRE。作为ROO-1408的一部分,我们增加了DBRE同时从多个模式获取结构的支持,您甚至可以拥有不同的模式在不同的Java包中管理实体。
  • Shell改进。许多人喜欢Roo的可用性,而且shell已经进入了许多其他VMware产品。我们很高兴JLine 1.0中包含了许多小修复(ROO-2608),进而也进入了Roo shell(例如,退格到上一行终于可以工作了!)。您还可以通过“!”操作符直接从Roo shell运行操作系统命令(ROO-2457),并且shell启动时现在会显示最新的社区推文(ROO-2677)。

如您所见,我们对Roo 1.2进行了许多增强,并期待您的反馈。在下一个Roo 1.2里程碑中,我们还有许多激动人心的新功能,包括JSF/PrimeFacesROO-516)支持和多模块MavenROO-120)项目支持。这两个也是社区高度要求的功能。

请记住这是一个里程碑版本,因此您应该继续在生产项目中使用Roo 1.1.5。但是,您可以通过尝试随附的示例项目来探索Roo 1.2.0.M1中的这些新功能。

希望您喜欢这个新版本。请通过社区论坛分享您的经验,关注@SpringRoo获取最新消息,或在您的推文中使用#springroo

阿兰·斯图尔特,Spring Roo项目负责人

Spring Roo 1.2 中新的应用分层和持久化选择

工程 | Stefan Schmidt | 2011年9月14日 | ...

Java 企业应用程序可以有多种形态和形式。根据其需求,开发人员需要决定应用程序需要哪些特定的架构层。到目前为止,Spring Roo 采取了实用方法,以减少服务门面、仓库或 DAO 层引入的往往不必要的复杂性。新发布的 Spring Roo 1.2.0.M1(查看公告)包含了频繁请求的对可根据应用程序需求量身定制的架构层的支持。本文概述了 Roo 的新服务和仓库层功能。

Spring Roo Application Layering Support

Spring Social 1.0:一年来的收获

工程 | Craig Walls | 2011年9月8日 | ...

举手示意:谁在使用 Facebook?有没有读者还在使用 Twitter?

我认识的几乎所有人都在使用 Facebook、Twitter、LinkedIn 或其他社交网络平台。事实上,我认识的大多数人都在多个社交网络平台上都有注册。根据最近的数据,Facebook 拥有超过 7.5 亿用户,Twitter 拥有超过 2 亿用户。就连我的母亲也注册了 Facebook。

好了,现在可以放下手了。

面对如此庞大的受众群体,很容易找到以商业为导向的动机来构建针对这些用户的应用程序。从更个人、更独立的角度来看……

本周 Spring 动态:2011 年 8 月 30 日

工程 | Josh Long | 2011 年 8 月 31 日 | ...

欢迎来到新一期的《本周 Spring 动态》。本周内容很多,话不多说,我们直接开始。特别说明:如果您正在阳光明媚的拉斯维加斯参加 VMworld 2011,欢迎光临 Cloud Application Platform 展位与我们打个招呼。

  1. 对于 CloudFoundry 来说,这真是令人激动的一周!本周推出了可供免费下载的 Micro Cloud Foundry,这是一款“即插即用的 PaaS”。Micro Cloud Foundry 是这款广受欢迎的开源平台即服务 (PaaS) 的完整本地版本,允许开发人员在自己的 Mac 或 PC 上运行功能齐全的云。通过使用 Micro Cloud Foundry,开发人员可以在本地构建端到端的云应用程序,而无需配置中间件的麻烦,同时保留部署位置的选择权,并在不改变任何代码的情况下扩展应用程序的能力。

    要了解更多关于 Micro Cloud Foundry 的信息,请查看这三篇博文:面向 Spring 开发人员Grails 开发人员的 Micro Cloud Foundry 介绍,以及 SpringSource Tool Suite 对 Micro CloudFoundry 的支持介绍。

    	</li> 
    	
    	<LI>Thomas Risberg blogged today about <A HREF="http://blog.springsource.com/2011/08/30/using-postgres-on-cloud-foundry/">using PostgreSQL on Cloud Foundry</a>. The recently announced  PostgreSQL support   makes CloudFoundry the natural place to deploy your enterprise applications: between MySQL and PostgreSQL there's very likely few speed or feature…

在 Cloud Foundry 上使用 Postgres

工程 | Thomas Risberg | 2011 年 8 月 30 日 | ...

今年早些时候,VMware 推出了新的开源平台即服务 (PaaS) 产品 Cloud Foundry,其中包含了由 MySQL 驱动的关系数据库服务,以及 MongoDB 和 Redis 的 NOSQL 选项。Open PaaS 的承诺之一是提供语言和框架的选择,以及可用的数据库服务。现在,我们有了新的使用 PostgreSQL 的关系数据库服务。这很棒,因为我们现在可以在最流行的两个开源关系数据库之间进行选择。PostgreSQL 是一个非常……

RabbitMQ:在 Cloud Foundry 上启用 Grails 全文搜索

工程 | Peter Ledbrook | 2011年8月29日 | ...

在我第二篇关于 Grails 和 Cloud Foundry 的博客中,我介绍了一个Grails Twitter 示例的变体,它可以在CloudFoundry.com上托管。当时我提到,使用 Searchable 插件进行全文搜索会将您限制在一个应用程序实例中,因为搜索索引对于每个实例都是唯一的。换句话说,您可能会根据浏览器路由到的应用程序实例,非常容易地获得不同的搜索结果。

我还说过,解决这个问题的其中一个方法是跨实例同步搜索索引。但这听起来不像是…

Android 应用程序中的干净代码

工程 | Roy Clarkson | 2011年08月26日 | ...

假设您有一天早上醒来,心想:“嘿,我今天要做一个 Android 应用。” 首先,这是一个不错的选择!截至 6 月底,每天有 500,000 台 Android 设备被激活,甚至超过了 iPhone。这意味着您的应用拥有庞大的潜在受众。此外,Android 是用 Java 构建的。这可能看起来不是什么大事,但我曾经在 Objective-CiOS 平台上工作过几年,虽然我现在对此非常熟悉,但相比 Android,iOS SDK 的学习曲线更为陡峭。当我刚开始使用 Android SDK 时,Android 感觉更容易上手。尽管如此,与您过去构建的任何其他 Java 应用程序相比,它仍然存在一些明显的差异,我将在第一个部分介绍其中一些。

再往前推移,您完成了第一个应用,并将其提交到了 Android Market。恭喜您,您的朋友们都在下载您的应用并在 Twitter 上讨论。现在该开始制作您的第二个应用了。您花了几天时间,突然意识到您开始重用第一个应用的代码,这本身并不是坏事。代码重用很有价值。但您会注意到有很多样板代码经常重复出现,这会分散您对业务逻辑的注意力。幸运的是,有一些方法可以改进这一点。

在这篇博文中,我将概述 Android 和应用程序生命周期,并讨论该框架施加的一些限制。我还将回顾一些可以帮助您清理 Android 代码、专注于应用目标的技术和第三方项目。

Android 概览

让我们从简要概述 Android 的工作原理开始。Android 应用程序(应用)使用 Java 构建,并编译为类文件。然后,类文件被编译为 Dalvik 可执行(DEX)格式,以便在 Android 使用的 Dalvik 虚拟机上运行。转换为 DEX 格式后,类文件会被打包成 Android 包(APK)分发到设备上。由于使用了 DEX 格式,Dalvik VM 并不是真正的 Java 虚拟机,因为它不操作 Java 字节码。此外,Dalvik VM 基于 Apache Harmony 项目的一个子集作为其核心类库。这意味着许多您在 Java SE 中习惯使用的类和方法是可用的,但肯定不是全部。我发现 Android 开发者网站上的 API 参考Android 开发者网站对于回顾这些差异是非常宝贵的资源。

默认情况下,每个 Android 应用程序都会由 Android 操作系统分配一个唯一的 Linux 用户 ID。当系统启动应用程序时,应用程序会在自己的 Linux 进程中,在其自己的虚拟机 (VM) 中运行。系统会根据需要管理该进程的启动和关闭。正如您所料,这意味着每个应用程序与其他正在运行的应用程序隔离运行。安装时,应用程序可以请求访问硬件功能或与其他应用程序交互的权限。用户选择授予应用程序这些权限或不安装它。应用程序所需或请求的权限在每个应用程序的 Android Manifest 文件中定义。这是一个 XML 文件,列出了应用程序的所有组件以及这些组件的任何设置。应用程序组件的四种类型是活动 (activities)服务 (services)内容提供者 (content providers)广播接收器 (broadcast receivers)。在本帖中,我将重点介绍活动。

活动基本上代表 Android 应用程序的一个屏幕。例如,Twitter 应用可能有一个登录屏幕、一个显示推文列表的屏幕和一个撰写新推文的屏幕。这些屏幕中的每一个都代表了应用程序中的不同活动。作为开发人员,您永远不会自己实例化一个活动对象。活动是通过发送一个名为Intent 的异步消息来激活的,如下面的示例所示。


startActivity(new Intent(context, HomeActivity.class));

当调用startActivity(Intent intent) 时,系统会创建一个新实例或重用现有实例以向用户显示活动。关键点在于,系统控制着应用程序和每个活动的启动、停止、创建和销毁。如果您想与此过程交互,那么应用程序和活动类会提供不同生命周期事件的方法,您可以在子类中覆盖它们。

依赖注入

Spring Android 项目最近达到了其第四个里程碑版本。通过该版本,我们继续改进了对 Android 的RestTemplateSpring Social 支持,这简化了发送 RESTful HTTP 请求和访问由 OAuth 保护的 REST API 的过程。虽然我们认为这些对 Android 开发是有价值的补充,但一些开发人员询问了 Spring Android 是否支持依赖注入的可能性,因为您可能已经知道,Spring Framework 已经提供了一个流行的控制反转 (IOC) 容器,用于在企业 Java 应用程序中启用依赖注入。在 Spring Android 的早期规划阶段,依赖注入支持被确定为该项目的潜在候选项目。当时,尚不清楚该支持将包含什么内容,以及如何实现。因此,我开始研究和调查在 Android 中执行依赖注入的可能方法和限制。

那么,什么是依赖注入呢?如果您问两个不同的开发人员,您可能会得到两个不同的答案。您可能会听到 IOC、XML 文件、注解或其他一些实现细节。实际上,依赖注入只是一种通过将对象所需的东西直接交给它,而不是让对象主动去环境中获取,来减少耦合的技术。这听起来很简单,您可能会想,您可以通过类构造函数和 setter 方法来实现这一点,这是完全正确的。但是,请回想一下上面概述的部分,Android 系统驱动着应用程序的生命周期,所以我们做到这一点方式是有限的。

Android 的方式

在不使用任何第三方库的情况下,将依赖项传递给 Activity 相当容易。如前所述,系统会创建应用程序实例。因此,通过扩展应用程序,您可以有效地创建一个单例依赖项实例,然后该应用程序中的任何活动都可以访问它。


public class MainApplication extends Application  {

    private MyService service;

    @Override
    public void onCreate() {
        super.onCreate();
        service = new MyServiceImpl();
    }

    public MyService getMyService() {
        return this.service;
    }
}

Activity 类有一个名为getApplication() 的方法,它返回一个对拥有该活动的应用程序对象的引用。我们只需将其强制转换为 MainApplication,就可以访问 MyService 的 getter 方法。当然,Activity 现在必须“知道”应用程序,这可能看起来是一个缺点。但请记住,Activity 已经知道它的应用程序。该方法是内置的。


public class MainActivity extends Activity  {

    private MyService service;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        MainApplication app = (MainApplication…

本周 Spring 动态:2011 年 8 月 23 日

工程 | Josh Long | 2011年8月24日 | ...

欢迎来到新一期的《本周 Spring 动态》。随着 VMworld 2011 的临近,事情进展得如火如荼。我想邀请所有与会者参观 VMWorld Spring 展位,与我们的专家技术人员交流。如果您阅读了本周总结,请告诉我。本周有很多话题可以聊,让我们开始吧!

    <li>The preliminary session schedule has been published for <a href="http://www.springone2gx.com">SpringOne 2GX 2011</a>. This year's show is going to be another fantastic mix of deep technical content, cutting edge development and the absolute best place to learn about everything in the Spring universe. Be sure to <a href="http://springone2gx.com/conference/chicago/2011/10/register">register now</a>!</li>
    
    <LI> <a href="http://static.springsource.org/spring/docs/3.0.6.RELEASE/changelog.txt">Spring 3.0.6's was just released!</a>   		 
    	 This release addresses over 50 minor issues and includes…

面向 Spring 开发者的 Micro Cloud Foundry

工程 | Josh Long | 2011年8月24日 | ...

今天 VMware 团队发布了 Micro Cloud Foundry,这是流行的开源平台即服务 (PaaS) 的完整本地版本,允许开发人员在 Mac 或 PC 上运行功能齐全的云。通过使用 Micro Cloud Foundry,开发人员可以本地构建端到端的云应用程序,而无需进行中间件配置的麻烦,同时保留部署位置的选择以及在不更改一行代码的情况下扩展应用程序的能力。

Micro Cloud Foundry 当然支持 Spring 和 Java,但它还为 Scala、Node.js 和 Ruby 提供了运行时环境,让您可以释放您内心的多语言程序员!Micro Cloud Foundry 还提供了许多服务,如 MongoDB、MySQL 和 Redis,这些服务无需进行 extensive 的安装和配置即可立即使用。通过内置的动态 DNS 支持,开发人员无论是在家、办公室还是咖啡店工作,都可以运行他们的 Micro Cloud Foundry,而无需任何重新配置。在 Micro Cloud Foundry 上创建和测试应用程序后,您可以轻松部署……

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

VMware 提供培训和认证,助您加速进步。

了解更多

获得支持

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件,只需一份简单的订阅。

了解更多

即将举行的活动

查看 Spring 社区所有即将举行的活动。

查看所有