Spring Boot 学习笔记(一)——入门

第1章 入门

1.1 Spring风云再起

    Spring诞生时是J2EE的轻量级替代品

    Spring为企业级Java开发提供了一种相对简单的方法,通过依赖注入(DI)和面向切面编程(AOP),用简单的Java对象(Plain Old Java Object,POJO)实现了EJB的功能

    虽然Spring组件代码是轻量级的,但它的配置却是重量级的。一开始,Spring用XML配置,而且是很多XML配置Spring 2.5引入了基于注解的组件扫描,这消除了大量针对应用程序自身组件的显示配置。Spring 3.0引入了基于Java的配置,这是一种类型安全的可重构的配置方式,可以替代XML。

    尽管如此,我们依旧需要很多配置。开启某些Spring特性时,比如事务管理和Spring MVC,还是需要用XML或Java进行显示配置。启用第三方库时也需要显示配置,比如基于Thymeleaf的Web视图。配置Servlet和过滤器(比如Spring的DispatcherServlet)同样需要在web.xml或Servlet初始化代码里进行显示配置。

    除此之外,项目的依赖管理也是件吃力不讨好的事情。决定项目里要用哪些库就已经够让人头痛了,你还要知道这些库的哪个版本和其他库不会有冲突。一旦选错了依赖的版本,随之而来的兼容问题毫无疑问是生产力杀手。

    Spring Boot让这一切成为了过去。

Spring的演进

1.1.1 重新认识Spring

     用Spring开发一个简单的Hello World Web应用程序,需要以下东西:

  1. 添加依赖:一个项目结构,包含必要的依赖的Maven或者Gradle构建文件,至少要有Spring MVC和Servlet API这些依赖。
  2. web.xml配置:一个web.xml文件(或者一个WebApplicationInitializer实现),其中声明了Spring的DispatcherServlet。
  3. Spring配置:一个启用了Spring MVC的Spring配置。
  4. 控制器类:一个用来响应HTTP请求的控制器类。
  5. Web应用服务器:用于部署应用程序的Web应用服务器,比如Tomcat。

     以上5点中,只有控制器类是和Hello World功能相关的,剩下的都是Spring开发的Web应用程序必需的通用样板。

     通过Spring Boot开发,Spring Boot会搞定执行应用程序所需的各种后勤工作(依赖、web.xml配置、Spring配置和Web应用服务器),开发人员只需要写和业务相关的应用程序代码。

1.1.2 Spring Boot 精要

    Spring Boot最重要的是以下四个核心:

  • 自动配置:针对很多Spring应用程序中常见的应用功能(DataSource、JdbcTemplate等等),Spring Boot能够自动提供相关配置。基于Spring 4.0中的条件化注解@Conditional

  • 起步依赖:告诉Spring Boot需要什么功能,它就能引入需要的库。在这之前,项目需要添加库,需要知道Group和Artifact,应该用哪个版本,不同版本会不会和其他依赖发生冲突。Spring Boot通过起步依赖为项目的依赖管理提供帮助。起步依赖其实就是特殊的Maven和Gradle依赖,利用了传递依赖解析,把常用库聚合在一起,组成了几个为特定功能而定制的依赖

    举个例子,假设你正在用Spring MVC构造一个REST API,并将JSON作为资源表述,此外你还想运用遵循JSR-303规范声明式校验,并使用嵌入式的Tomcat服务器来提供服务,要实现以上目标,需要在Maven或Gradle里至少配置以下8个依赖:
         - org.springframework:spring-core
         - org.springframework:spring-web
         - org.springframework:spring-webmvc
         - com.fasterxml.jackson.core:Jackson-databind
         - org.hibernate:hibernate-validator
         - org.apache.tomcat.embed:tomcat-embed-core
         - org.apache.tomcat.embed:tomcat-embed-el
         - org.apache.tomcat.embed:tomcat-embed-logging-juli

    如果利用Spring Boot的起步依赖,只需要添加Spring Boot的Web起步依赖(org.springframework.boot:spring-boot-starter-web),它会根据依赖传递把其他所需依赖引入项目中。起步依赖基本都以spring-boot-starter开头,随后是直接代表功能的名字,比如web、test等。

  • 命令行界面:这是Spring Boot的可选特性,借此你只需要写代码就能完成完整的应用程序,无需传统项目构建。

    Spring Boot CLI利用了起步依赖和自动配置,让开发人员专注于代码本身。

    CLI能够检测到代码中使用了哪些类,他知道要向Classpath中添加哪些起步依赖才能让它运行起来,一旦那些依赖出现在Classpath中,一系列自动配置就会接踵而来,确保启用代码需要的功能。

  • Actuator:让你能够深入运行中的Spring Boot应用程序,一探究竟。它提供了很多>生产级的特性,诸如监控、查看配置明细、运行时度量等等。它提供了在运行时检视应用程序内部情况的能力,包括以下细节:
        1.Spring应用程序上下文里配置的Bean。
        2.Spring Boot的自动配置做的决策。
        3.应用程序取到的环境变量、系统属性、配置属性和命令行参数。
        4.应用程序里线程的当前状态。
        5.应用程序最近处理过的HTTP请求的跟踪情况。
        6.各种和内存用量、垃圾回收、Web请求以及数据源用量相关的指标。

1.1.3 Spring Boot 不是什么

  • Spring Boot不是应用服务器。Spring Boot可以把Web应用程序构建为可自执行的JAR文件,不用部署到传统Java应用服务器里就能够在命令行里运行,Spring Boot在应用程序里嵌入了一个Servlet容器(Tomcat、Jetty或Undertow),以此实现这一功能,但这是内嵌的Servlet容器提供的功能,不是Spring Boot实现的。
  • Spring Boot没有实现诸如JPA或JMS之类的企业级规范。它只是在自动配置中完成了某些企业级特性的Bean。
  • Spring Boot没有引入任何形式的代码生成。它只是利用了Spring 4的条件化配置特性(@Conditional注解)。

1.2 Spring Boot 入门

1.2.1 安装Spring Boot CLI

    略

1.2.2 使用Spring Initializr 初始化Spring Boot 项目

  1. 通过Web界面使用,打开浏览器访问https://start.spring.io
  2. 通过Spring Tool Suite使用,这是Eclipse的一个插件,增加了许多辅助Spring开发的特性,可以从http://spring.io/tools/sts 下载。
  3. 通过Intellij IDEA使用。Intellij IDEA 14.1已经支持Spring Boot了,之前的版本可以在File->Settings->Plugins->Brower responsitories…中搜索Spring Assistant并下载安装该插件。
  4. 在Spring Boot CLI里使用Initializr。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值