相信不少 Java 开发者都不会对 Spring 陌生,作为开源项目,Spring 备受关注也与时俱进。在各个公司开始尝试落地微服务的过程中,Spring Boot 是不可不研究 。为了更好地了解 Spring Boot,InfoQ 专门对 Spring Boot 团队开发者 Madhura Bhave 进行了采访,这位来自 Pivotal 的美女程序员进行了专业而又深入浅出的解答。
受访者简介
Madhura Bhave, Pivotal 的 Spring Boot 团队中的开发人员。在加入 Spring Boot 团队之前,Madhura 曾从事 UAA 相关的工作(UAA 是适用于 Cloud Foundry 的身份验证和授权组件,用 Spring 编写)。Madhura Bhave 将作为分享嘉宾出席 8 月 26 日于北京召开的 Spring Summit,进行《魔术揭秘:深入挖掘 Spring Boot 的内在潜力》的主题分享。
Madhura Bhave:Spring Framework 是一个可用于创建企业级应用程序的 Java 平台。 Spring 专注于企业应用程序的“管道”,使团队可以专注于应用程序级的业务逻辑。它有超过 20 个模块,如 Web、数据访问 / 集成等等,这可能使 Spring 成为构建应用程序的一站式服务。Spring Boot 基于 Spring 框架,使应用程序开发人员可以快速创建生产级应用程序,而不需要进行太多配置。它会尝试根据您添加的 Jar 来自动配置应用程序。
可以将 Spring 框架视为车辆的部件,并将 Spring Boot 作为制造车辆本身。根据个人选择车辆部件,获得汽车、卡车、飞机等。
Madhura Bhave:Spring Boot 的设计原则之一是配置的约定哲学。它旨在帮助创建一个可以“运行”,让开发者快速运行应用程序。它被设计为高度开箱即用,但用户也同样可以根据自己需求进行设置。
Madhura Bhave:Spring Boot,Spring Cloud 和 Microservices 都可以混淆,但三者之间的关系其实是正交。
微服务架构是将软件应用程序构建为一套小型、可独立部署的服务的一种方式。其目标是通过将应用程序分成多个可组合的部分,使应用程序更易于构建和维护。
Spring Cloud 构建在 Spring Boot 之上,重点是为分布式应用程序提供良好的开箱即用体验。 Spring Cloud 包含了一些增强应用程序行为的库、配置属性、服务发现、断路器,这些都是 Spring Cloud 对分布式系统的支持。刚才所说的这些模式都是微服务架构的重要组成部分,因此 Spring Cloud 非常适合开发微服务器。
Madhura Bhave:与同类项目相比,我认为 Spring 可以很好地管理两个矛盾的目标:长期的可用性即 API 稳定性 vs 对最新技术(JDK 和库版本)和趋势的支持。
与自编码解决方案相比,Spring 拥有大量用户群体,可以帮助 Spring 提供恰到好处的 API 和编程模型,而这些几乎可以覆盖所有的需求场景。
Madhura Bhave:今年 Spring Boot 2.0 版本即将问世。Spring 确实很大,因为它与很多不同的技术相结合。但是,尽管 Spring 辐射的技术区域不断增加,但我并不认为这意味着更复杂。Spring 是高度模块化的设计,开发者只需要关心他选择的组件。Spring Boot 正是为简化 Spring 配置而设计的,这本身就是一个很好的例子。
软件开发是一个迅速发展并且充满挑战的行业。Spring 一直在努力地跟进优秀的新范式,比如最近的响应式编程(reactive programming)。同时,Spring 提供了一致的模型,并允许开发者将积累的知识用于新范例的使用。 Spring Boot 2.0 主要新特性集成了 Spring Framework 5 中对响应式编程的支持。
Madhura Bhave:入门 Spring 和 Spring Boot 有很多学习资源。 Spring 团队撰写很多使用方法和技巧指南 https://spring.io/guides。 Josh Long 也有一个 Spring Tips 视频系列:https://www.youtube.com/playlist?list=PLgGXSWYM2FpPw8rV0tZoMiJYSCiLhPnOc。
Madhura Bhave: Spring 本身是开放的源码,拥有大量的贡献者。 Pivotal 是 Spring 的主要赞助商,并且大部分 Spring 的社区贡献者都在 Pivotal 工作。 Pivotal 还拥有 Pivotal Cloud Foundry(PCF),它是一个基于开源 Cloud Foundry 的平台即服务(PaaS)。 Spring 为 PCF 提供了一些商业产品,使 PCF 成为运行 Spring Boot 和 Spring Cloud 应用程序的最佳选择。
Spring Cloud 项目中有服务器端组件,包括 Spring Cloud Netflix 和 Spring Cloud Config 等,这些可以作为 PCF Marketplace 中的提供服务。 PCF Apps Manager UI 与 Spring Boot 致动器端点集成,可以更轻松地监控和管理云中的应用程序。当然,由于商业产品建立在现有的开源项目之上,社区的反馈和贡献在塑造 Spring 项目方面发挥了重要作用。
Madhura Bhave:我认为你的编码能力与你的性别无关。在 Pivotal 的工作中,我曾与女工程师合作,他们的工程能力与他们最好的男性不相上下。不可否认的是,这个行业中男性占了大多数,而且女性数量略显缺乏。还有一些技术强的女性并不是很积极地为开源项目贡献,可能是对自己的能力没有足够信心、担心不被接受。然而,依据我的所见所闻,女性技能并不差。同时,并不是所有人都歧视女生,以我亲身经历举例,在我的团队中,我的意见和其他同事一样被受到重视。
Madhura Bhave:要在任何领域取得成功,你必须爱上你所做的事情。这同样适用于编程,你的热情和奉献会陪伴你走很长很远的路。当然,我也认为沟通和同理心也很重要,特别是在开源项目 (OSS,Open-source software) 中,共同协作的人们分布在世界各地。