Spring Boot入门

什么是 Spring Boot

Spring Boot是所有基于Spring开发的项目的起点。Spring Boot的设计是为了让你尽可能快的跑起来Spring应用程序并且尽可能减少你的配置文件。

它是Spring的升级版,Spring容器能做到的事情,它都能做到,而且更简便,从配置形式上来说,SpringBoot完全抛弃了繁琐的XML文件配置方式,而是替代性地用注解方式来实现,虽然本质来说,是差不多的(类似包扫描,注解扫描,类加载之类)。

  • 它使用 “习惯优于配置” 的理念让你的项目快速运行起来。
  • 它并不是什么新的框架,而是默认配置了很多框架的使用方式,就像 Maven 整合了所有的 jar包一样,Spring Boot 整合了所有框架

Spring Boot 核心功能

1)独立运行的 Spring 项目

Spring Boot 可以以 jar 包的形式独立运行,运行一个 Spring Boot 项目只需通过 java–jar xx.jar 来运行。

2)内嵌 Servlet 容器

Spring Boot 可选择内嵌 Tomcat、Jetty 或者 Undertow,这样我们无须以 war 包形式部署项目。

3)提供 starter 简化 Maven 配置

Spring 提供了一系列的 starter pom 来简化 Maven 的依赖加载,例如,当你使用了spring-boot-starter-web时,会自动添加Tomcat和Spring MVC的依赖,那么Spring Boot会对Tomcat和Spring MVC进行自动配置。

4)自动配置 Spring

Spring Boot 会根据在类路径中的 jar 包、类,为 jar 包里的类自动配置 Bean,这样会极大地减少我们要使用的配置。当然,Spring Boot 只是考虑了大多数的开发场景,并不是所有的场景,若在实际开发中我们需要自动配置 Bean,而 Spring Boot 没有提供支持,则可以自定义自动配置。

5)准生产的应用监控

Spring Boot 提供基于 http、ssh、telnet 对运行时的项目进行监控。

6)无代码生成和 xml 配置

Spring Boot 的神奇的不是借助于代码生成来实现的,而是通过条件注解来实现的,这是 Spring 4.x 提供的新特性。Spring 4.x 提倡使用 Java 配置和注解配置组合,而 Spring Boot 不需要任何 xml 配置即可实现 Spring 的所有配置。

使用 Spring Boot 优缺点

1)优点

  • 快速构建项目。
  • 对主流开发框架的无配置集成。
  • 项目可独立运行,无须外部依赖Servlet容器。
  • 提供运行时的应用监控。
  • 极大地提高了开发、部署效率。
  • 与云计算的天然集成。

2)缺点

  • 版本迭代速度很快,一些模块改动很大。
  • 由于不用自己做配置,报错时很难定位。
  • 网上现成的解决方案比较少。

Spring boot和spring cloud的区别

1.Spring boot是Spring的一套快速配置脚手架,可以基于Spring Boot快速开发单个微服务;Spring Cloud是一个基于Spring Boot实现的云应用开发工具

2.Spring Boot专注于快速、方便集成的单个个体,Spring Cloud是关注全局的服务治理框架;

3.Spring boot使用了默认大于配置的理念,很多集成方案已经帮你选择好了,能不配置就不配置,Spring Cloud很大的一部分是基于Spring Boot来实现。

4.Spring Boot可以离开Spring Cloud独立使用开发项目,但是Spring Cloud离不开Spring Boot,属于依赖的关系。

Spring Boot 快速搭建

Spring Boot进行功能开发,需要使用Gradle或者Maven作为构建工具

第一步:新建项目(IDEA)

选择 Spring Initializr ,然后选择默认的 url 点击【Next】:

修改项目信息

 选择模板

 

项目位置

如果是第一次配置 Spring Boot 的话可能需要等待一会儿 IDEA 下载相应的 依赖包,默认创建好的项目结构如下:

工程结构

SpringbootTestApplication.java:应用程序启动入口,可直接Run启动服务,类似于tomcat的start.sh
application.properties:配置属性空文件,可改为application.yml文件,SpringBoot都能识别
pom.xml:maven工程定义文件,表明该项目的maven坐标信息

pom差异解析

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.9.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
  • 差异一. 引入了该parent说明具备了SpringBoot的基本功能,可直接依赖其父工程(SpringBoot)的包
  • 差异二. web应用启动核心jar,解压出来里面除了些依赖什么都没有,所以Starter主要用来简化依赖用的,比如我们之前做MVC时要引入日志组件,那么需要去找到log4j的版本,然后引入,现在有了Starter之后,直接用这个之后,log4j就自动引入了,也不用关心版本这些问题,注:若想更改其下某一个jar(如log4j)的版本,则可自行进行升降
  • 差异三. 能够将Spring Boot应用打包为可执行的jar或war文件,然后以通常的方式运行Spring Boot应用

有了这个,当前的项目才是 Spring Boot 项目,spring-boot-starter-parent 是一个特殊的 starter ,它用来提供相关的 Maven 默认依赖,使用它之后,常用的包依赖就可以省去 version 标签。

关于具体 Spring Boot 提供了哪些 jar 包的依赖,我们可以查看本地 Maven 仓库下:\repository\org\springframework\boot\spring-boot-dependencies\2.0.1.RELEASE\spring-boot-dependencies-2.0.1.RELEASE.pom

第二步:HelloController

第三步:利用 IDEA 启动 Spring Boot

我们回到 SpringbootTestApplication 这个类中,然后右键点击运行:

注意:我们之所以在上面的项目中没有手动的去配置 Tomcat 服务器,是因为 Spring Boot 内置了 Tomcat

等待一会儿就会看到下方的成功运行的提示信息:

访问 http://localhost:8080/hello

@Controller 注解

在对应的方法上,视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面。若返回json等内容到页面,则需要加@ResponseBody注解

@RestController注解

相当于@Controller+@ResponseBody两个注解的结合,返回json数据不需要在方法前面加@ResponseBody注解了,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面

@SpringBootApplication注解

是Sprnig Boot项目的核心注解,主要目的是开启自动配置。下面详解

应用入口类

Spring Boot 项目通常有一个名为 *Application 的入口类,入口类里有一个 main 方法,这个 main 方法其实就是一个标准的 Javay (源代码编译的文件)应用的入口方法。

@SpringBootApplication 是 Spring Boot 的核心注解,它是一个组合注解

该注解组合了:@Configuration、@EnableAutoConfiguration、@ComponentScan;

 若不用@SpringBootApplication 注解也可以使用这三个注解代替。

@Configuration它就是JavaConfig 形式的 Spring IoC 容器的配置类使用的那个 @Configuration,配置类注解,既然 SpringBoot 应用就是一个 Spring 应用,那么,自然也需要加载某个 IoC 容器的配置,而 SpringBoot 社区推荐使用基于 JavaConfig 的配置形式,所以,很明显,这里的启动类标注了 @Configuration 之后,本身其实也是一个 Ioc 容器的配置类@ComponentScan注解会告知Spring扫描指定的包来初始化Spring Bean,这能够确保我们声明的Bean能够被发现。@EnableAutoConfiguration 让Spring Boot根据类路径中的 jar 包依赖为当前项目进行自动配置,将会启动自动配置模式,在我们的配置中会将对Tomcat的依赖级联进来,因此在应用启动时将会自动启动一个嵌入式的Tomcat,因为在样例中使用了Spring MVC,所以也会自动注册所需的DispatcherServlet,这都不需要类似web.xml这样的配置。例如,添加了spring-boot-starter-web 依赖,会自动添加Tomcat 和Spring MVC 的依赖,那么Spring Boot会对Tomcat和Spring MVC进行自动配置

Spring Boot 还会自动扫描 @SpringBootApplication 所在类的同级包以及下级包里的 Bean ,所以入口类建议就配置在 grounpID + arctifactID 组合的包名下(这里为 cn.guxilong 包)

Spring Boot 的配置文件

Spring Boot 不仅支持常规的 properties 配置文件,还支持 yaml 语言的配置文件。yaml 是以数据为中心的语言,在配置数据的时候具有面向对象的特征。

本文不使用application.properties文件 而使用更加简洁的application.yml文件。将resource文件夹下原有的application.properties文件删除,创建application.yml配置文件(备注:其实SpringBoot底层会把application.yml文件解析为application.properties),本文创建了两个yml文件(application.yml和application-dev.yml),分别来看一下内容

application.yml

application-dev.yml 

在项目中配置多套环境的配置方法

在Spring Boot中多环境配置文件名需要满足application-{profile}.yml的格式,其中{profile}对应你的环境标识,比如:

application-dev.yml:开发环境

application-test.yml:测试环境

application-prod.yml:生产环境

至于哪个具体的配置文件会被加载,需要在application.yml文件中通过spring.profiles.active属性来设置,其值对应{profile}值。

配置文件中最好不要有中文注释,会报错。

解决方法:

yml文件讲解

1.代码取yml里面的属性

你也可以在配置文件中使用当前配置:

问题: 这样写配置文件繁琐而且可能会造成类的臃肿,因为有许许多多的 @Value 注解。

我们可以把配置信息封装成一个类,首先在我们的 name 和 age 前加一个 student 前缀,然后新建一个 StudentProperties 的类用来封装这些信息,并用上两个注解:

  • @Component:表明当前类是一个 Java Bean
  • @ConfigurationProperties(prefix = "student"):表示获取前缀为 sutdent 的配置信息

Spring Boot 支持 JSP

Spring Boot 的默认视图支持是 Thymeleaf 模板引擎,但是这个我们不熟悉啊,我们还是想要使用 JSP 怎么办呢?

  • 第一步:修改 pom.xml 增加对 JSP 文件的支持
<!-- servlet依赖. -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
</dependency>
<!-- tomcat的支持.-->
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency>
  • 第二步:配置试图重定向 JSP 文件的位置

修改 application.yml 文件,将我们的 JSP 文件重定向到 /WEB-INF/views/ 目录下:

  • 第三步:修改 HelloController

修改 @RestController 注解为 @Controller

  • 第四步:新建 hello.jsp 文件

在【src/main】目录下依次创建 webapp、WEB-INF、views 目录,并创建一个 hello.jsp 文件:

测试运行

关于 404,使用 spring-boot:run 运行项目可以解决:

 如果出现下面的错误,请注意查看yml配置文件的格式时候正确,特别是空格缩进,不要手敲空格,用代码提示最好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值