Spring Boot

第1章 Spring Boot 简介 

Spring 诞生时是 Java 企业版(Java Enterprise Edition,JEE,也称 J2EE)的轻量级代替品。无 需开发重量级的 Enterprise JavaBean(EJB),Spring 为企业级 Java 开发提供了一种相对简单的方法, 通过依赖注入和面向切面编程,用简单的 Java 对象(Plain Old Java Object,POJO)实现了 EJB 的功能。 

虽然 Spring 的组件代码是轻量级的,但它的配置却是重量级的。 

  • 第一阶段:xml 配置  

在Spring 1.x时代,使用Spring开发满眼都是xml配置的Bean,随着项目的扩大,我们需要把xml 配置文件放到不同的配置文件里,那时需要频繁的在开发的类和配置文件之间进行切换 

  • 第二阶段:注解配置 

在 Spring 2.x 时代,随着 JDK1.5 带来的注解支持,Spring 提供了声明 Bean 的注解(例如 @Component、@Service),大大减少了配置量。主要使用的方式是应用的基本配置(如数据库配置)用 xml,业 务配置用注解 
 

  • 第三阶段:java 配置 

Spring 3.0 引入了基于 Java 的配置能力,这是一种类型安全的可重构配置方式,可以代替 XML。 我们目前刚好处于这个时代,Spring4.x 和 Spring Boot 都推荐使用 Java 配置。 
 
所有这些配置都代表了开发时的损耗。 因为在思考 Spring 特性配置和解决业务问题之间需要进行思维切 换,所以写配置挤占了写应用程序逻辑的时间。除此之外,项目的依赖管理也是件吃力不讨好的事情。决定项目里
要用哪些库就已经够让人头痛的了,你还要知道这些库的哪个版本和其他库不会有冲突,这难题实在太棘手。并
且,依赖管理也是一种损耗,添加依赖不是写应用程序代码。一旦选错了依赖的版本,随之而来的不兼容问题毫无 疑问会是生产力杀手。 
 
Spring Boot 让这一切成为了过去。 Spring Boot 简化了基于 Spring 的应用开发,只需要“run”就能创建一个独立的、生产级别的 Spring 应用。Spring Boot 为 Spring 平台及第三方库提供开箱即用的设置(提供默认设置),这样我们就可以简单的 开始。多数 Spring Boot 应用只需要很少的 Spring 配置。 我们可以使用 SpringBoot 创建 java 应用,并使用 java –jar 启动它,或者采用传统的 war 部署方式。 
 
Spring Boot 主要目标是:  为所有 Spring 的开发提供一个从根本上更快的入门体验  开箱即用,但通过自己设置参数,即可快速摆脱这种方式。 

提供了一些大型项目中常见的非功能性特性,如内嵌服务器、安全、指标,健康检测、外部化配置等  绝对没有代码生成,也无需 XML 配置。 

第2章 Spring Boot 入门 

2.1 环境搭建 

2.1.1 环境需求 

数据库:MySQL

IDE:Eclipse Mars2

Spring-Boot:1.4.4

Maven: 3.3.3 (官方声明 1.4.4 版本需要 Maven 3.2+)

本地仓库:需要使用资料中的仓库 

2.1.2 创建一个 Maven 工程并添加起步依赖 

添加依赖 在 pom.xml 中添加依赖,效果如下

<parent>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-parent</artifactId>
   <version>1.4.4.RELEASE</version>
</parent>

<groupId>cn.xxx.springboot</groupId>
<artifactId>xxx-springboot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

我们会惊奇地发现,我们的工程自动添加了好多好多 jar 包,而这些 jar 包正式我们做开发时需要导入的 jar 包。 

因 为 这 些 jar 包 被 我 们 刚 才 加 入 的 spring-boot-starter-web 所 引 用 了 , 所 以 添 加 spring-boot-starter-web 后会自动把依赖传递过来。 

2.1.3 变更 JDK 版本(如果做了 maven 全局配置可略过此步) 

我们发现默认情况下工程的 JDK 版本是 1.6,但是通常使用的是 1.7 的版本 

修改 JDK 为 1.7,需要在 pom.xml 中添加以下配置: 

    <properties>
        <java.version>1.7</java.version>
    </properties>

使用 Maven 更新工程后,就发现版本已经变成 1.8 了 

注意:  虽然 JDK1.6 或者 1.7 都可以使用 Spring-Boot,但 Spring-Boot 官方建议使用 JDK1.8。要使用 JDK1.8,首先必须要配置 JDK1.8 后,才可以使用上述方法设置。 

2.1.4 编写引导类并使用注解配置 

需要创建一个引导类: 

package com.xxx;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Demo {
    public static void main(String[] args) {
        SpringApplication.run(Demo.class, args);
    }
}

这里多了一个@SpringBootApplication 注解 

@Configuration: 用于定义一个配置类 

@EnableAutoConfiguration :Spring Boot 会自动根据你 jar 包的依赖来自动配置 项目。 

@ComponentScan: 告诉 Spring 哪个 packages 的用注解标识的类会被 spring 自动扫描并且装入 bean 容器。

Banner 
直接启动,控制台出现以下标识。 
  .   ____          _            __ _ _ 
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \ 
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ 
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) ) 
  '  |____| .__|_| |_|_| |_\__, | / / / / 
 =========|_|==============|___/=/_/_/_/  :: Spring Boot ::        (v1.4.4.RELEASE) 

这个标识是 Spring 启动标识,如果不想要,可以设置取消 

package com.xxx;

import javafx.application.Application;
import org.springframework.boot.Banner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Demo {
    public static void main(String[] args) {
//        SpringApplication.run(Demo.class, args);
        SpringApplication application = new SpringApplication(Application.class);
        application.setBannerMode(Banner.Mode.OFF);
        application.run(args);
    }
}

参考附录二的 banner 设置,可以通过修改配置文件制定自己的标识

2.1.5 测试环境搭建结果 

在地址栏输入:http://localhost:8080,看到下图即表示搭建成功 

2.2 入门程序 

2.2.1 需求 

使用 Spring MVC 和 Spring Boot 整合实现浏览器输出 Hello Spring Boot! 

2.2.2 原来的实现 

我们现在开始使用 spring MVC 框架,实现 json 数据的输出。如果按照我们原来的做法,需要在 web.xml 中添加一个 DispatcherServlet 的配置,还需要添加一个 spring 的配置文件,配置文件如下配置 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    <!-- spring 加入配置 -->
    <!-- controller 注解扫描 -->
    <context:component-scan base-package="cn.xxx.springboot.controller"
    />

    <!-- 注解驱动 -->
    <mvc:annotation-driven/>

    <!--web.xml 加入配置 -->
    <!-- 配置前端控制器 -->
    <servlet>
        <servlet-name>xxx-springboot</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring/*.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>xxx-springboot</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</beans>

还要编写 Controller。。。 

2.2.3 Spring-Boot 的实现 

我们不需要配置文件,直接编写 Controller 类即可 

package com.xxx.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String hello(){
        return "hello world";
    }
}

@RestController 注解:  

其实就是@Controller 和@ResponseBody 注解加在一起 

启动方式一:启动之前编写的引导类即可

启动方式二:使用 Maven 命令 spring-boot:run 执行即可 

选择 Maven Build 

在浏览器地址栏输入 http://localhost:8080/hello 即可看到运行结果 

2.3 热部署 

我们在开发中反复修改类、页面等资源,每次修改后都是需要重新启动才生效,这样每次启动都很麻烦,浪费 了大量的时间。 
 
能不能在我修改代码后不重启就能生效呢?可以,由于 Spring Boot 应用只是普通的 Java 应用,所以 JVM 热交换(hot-swapping)也能开箱即用。不过 JVM 热交换能替换的字节码有限制,想要更彻底的解决方案可以使 用 Spring Loaded 项目或 JRebel。 spring-boot-devtools 模块也支持应用快速重启(restart)。 

2.3.1 导入 maven 依赖 

我们只需要在 pom.xml 加入如下配置即可 

         <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
         </dependency>

2.3.2 在 eclipse 中配置启动参数 

-javaagent:E:/MavenRepository/org/springframework/springloaded/1.2.9/springloade d-1.2.9.jar  -noverify

2.3.3 特殊说明 

在 spring5.x 时,必须使用 springloaded 最新版 1.2.9。因为 spring5.x 采用的是 1.8 为内核编写的。而
springloaded1.2.9 以前的版本都不支持 spring5.x。 

这个 jar 包需无法通过在 pom.xml 中导入依赖自动下载。需要我们自己下载并且手动安装到 maven 仓库。 

maven 命令: 
 首先通过 cmd 窗口进入到 jar 所在目录,然后拷贝下面的命令到控制台。回车运行。 

mvn install:install-file -DgroupId=org.springframework -DartifactId=springloaded -Dversion=1.2.9 
-Dpackaging=jar -Dfile=springloaded-1.2.9.BUILD.jar 

注意: 
 安装 jar 包时,jar 存放目录最好别有中文和空格。 

  • 18
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值