Spring入门——SpringBoot(春季靴???)
SpringBoot
什么是SpringBoot
Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。
SpringBoot的特点
- List item
在以前我们使用Spring搭建项目时需要写大量的xml代码来配置Spring,这些代码与业务无关,编写配置挤占了编写应用程序业务的时间,依赖的管控也是一件令人头大的事,一旦选错了依赖的版本,随之带来版本的不兼容问题。
复杂的配置+依赖的冲突 造成了Spring的不方便之处,这时SpringBoot就出现了。
这是官网关于SpringBoot的介绍
简单翻译一下就是
- 创建独立的Spring应用程序
- 直接嵌入Tomcat,Jetty或Undertow(无需部署WAR文件)
- 提供自定义的“入门”依赖项,以简化构建配置
- 尽可能自动配置Spring和第三方类库
- 提供生产就绪的功能,例如指标,运行状况检查和外部配置
- 完全没有代码生成,也不需要XML配置
关于SpringBoot有两大特点
- 自动配置
- 起步依赖
什么是自动配置
简单点说:SpringBoot对常用的Spring的依赖进行再一次封装,方便我们引入。
当我们要导入web相关的依赖时我们要导入Spring-web和Spring-mvc的依赖,但当我们使用了SpringBoot后,就只需导入起步依赖的包即可。
<!--SpringBoot Web配置--><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.1.7.RELEASE</version></dependency>
当我们点进去查看源码时,发现SpringBoot帮我们封装了web环境下所需的一切依赖,也就是说,当我们导入SpringBoot的web起步依赖时,Spring默认帮我们添加了web环境下的所需依赖,我们不用再去担心依赖之间的冲突问题。
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starters</artifactId><version>2.1.4.RELEASE</version></parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.1.4.RELEASE</version><name>Spring Boot Web Starter</name><description>Starter for building web, including RESTful, applications using SpringMVC. Uses Tomcat as the default embedded container</description><url>https://projects.spring.io/spring-boot/#/spring-boot-parent/spring-boot-starters/spring-boot-starter-web</url><organization><name>Pivotal Software, Inc.</name><url>https://spring.io</url></organization><licenses><license><name>Apache License, Version 2.0</name><url>https://www.apache.org/licenses/LICENSE-2.0</url></license></licenses><developers><developer><name>Pivotal</name><email>info@pivotal.io</email><organization>Pivotal Software, Inc.</organization><organizationUrl>https://www.spring.io</organizationUrl></developer></developers><scm><connection>scm:git:git://github.com/spring-projects/spring-boot.git/spring-boot-starters/spring-boot-starter-web</connection><developerConnection>scm:git:ssh://git@github.com/spring-projects/spring-boot.git/spring-boot-starters/spring-boot-starter-web</developerConnection><url>https://github.com/spring-projects/spring-boot/spring-boot-starters/spring-boot-starter-web</url></scm><issueManagement><system>Github</system><url>https://github.com/spring-projects/spring-boot/issues</url></issueManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>2.1.4.RELEASE</version><scope>compile</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-json</artifactId><version>2.1.4.RELEASE</version><scope>compile</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><version>2.1.4.RELEASE</version><scope>compile</scope></dependency><dependency><groupId>org.hibernate.validator</groupId><artifactId>hibernate-validator</artifactId><version>6.0.16.Final</version><scope>compile</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>5.1.6.RELEASE</version><scope>compile</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.1.6.RELEASE</version><scope>compile</scope></dependency></dependencies>
什么是自动配置
在我们使用Spring必须配置相关的xml文件 (web.xml,SpringMVC.xml)。这样繁琐的配置降低了我们开发的效率和时间。
当我们用上Spring Boot时的自动配置,Spring会帮助你完成配置文件的导入,配置应该用哪个,不该用哪个,该过程是Spring决定的。
先来入门再来分析
Spring入门案例
idea支持Spring的快速入门,当使用idea的快速入门时Spring会帮助你自动创建环境(需要手动选择需要的环境和依赖)
快速入门
这里使用快速入门也可以,创建Maven项目手动导依赖也可以达到同样效果
创建Maven项目
需要在项目中导入父依赖
父依赖中指定了依赖的版本(即在后面的Spring起步依赖中都不用指定版本)
<!-- SpringBoot的父依赖--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.4.RELEASE</version></parent>
导入web相关依赖
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
启动类(值得注意的:启动类存放的位置必须是比所有文件大上一级,否则报错)
@SpringBootApplication
public class HelloSpringBootApplication {public static void main(String[] args) {SpringApplication.run(HelloSpringBootApplication.class,args);}
}
controller
运行启动类即可运行项目
测试
说明
在Spring的官方文档中
简单翻译下:
尽管可以将该服务打包为传统的WAR文件以部署到外部应用程序服务器,但是下面演示的更简单的方法创建了一个独立的应用程序。 您将所有内容打包在一个可执行的JAR文件中,该文件由一个很好的旧Java main()方法驱动。 在此过程中,您将使用Spring的支持将Tomcat servlet容器作为HTTP运行时嵌入,而不是部署到外部实例
这就是刚才的启动类了(启动类上的 SpringBootApplication注解 启动了SpringBoot内嵌的服务器(即Tomcat))
那SpringBootApplication注解又是如何工作的呢?官方文档中也有进行了说明。
@SpringBootApplication是一个方便的注释,它添加了以下所有内容:
@Configuration:将类标记为应用程序上下文的bean定义源。@EnableAutoConfiguration:告诉Spring Boot根据类路径设置、其他bean和各种属性设置开始添加bean。例如,如果spring-webmvc位于类路径上,则该注释将应用程序标记为web应用程序并激活关键行为,例如设置DispatcherServlet。
**@ComponentScan:**告诉Spring在hello packag中查找其他组件、配置和服务
下面Spring也给出了这个方法的方便之处
main()方法使用Spring Boot的SpringApplication.run()方法来启动应用程序。您注意到没有一行XML吗?也没有web.xml文件。这个web应用程序是100%纯Java的,您不必配置任何管道或基础设施。
在关于Controller上的**@RestController注解**,Spring也给出了声明
这段代码使用了Spring 4新的@RestController注释,它将类标记为一个控制器,其中每个方法返回一个域对象而不是一个视图。它是@Controller和@ResponseBody的缩写。
上面的示例没有指定GET与PUT、POST等,因为@RequestMapping默认映射所有HTTP操作。使用@RequestMapping(method=GET)来缩小这个映射。
具体源码解析看这里
推荐阅读
SpringBoot的源码解析
SpringBoot源码分析—启动过程
SpringBoot的配置
当我们想要在项目中配置我们想要的配置时,我们该怎么做呢?
Spring在配置时利用了application.properties 文件定义了配置,我们只需重写即可
我们可以在resources目录下创建application.properties文件或application.yml下
来重写Spring的相关配置
值得注意的是:如果properties和yml配置文件同时存在在spring Boot项目中;那么这两类配置文件都有效。在两个配置文件中如果存在同名的配置项的话会以properties文件的为主
当创建了配置文件后,我们就可以对项目的配置做修改了
#sqlspring:datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql:///demousername: rootpassword: rootapplication:name: shelock
#mybatismybatis:mapper-locations: # 映射文件的位置- classpath:/mapper/*Mapper.xmltype-aliases-package: com.shelock.pojoconfiguration:map-underscore-to-camel-case: true# tomcat端口号
server:port: 8080
tomcat(默认为8080)
jdbc
mybatis
推荐阅读
Spring Boot干货系列
最后
关于SpringBoot就大概讲这么多,有空再更(或者说有人看??)
如果文章有错的地方欢迎指正。
个人博客: juhaozero的博客
Spring入门——SpringBoot(春季靴???)相关推荐
- 从零开始写类似Spring和SpringBoot的框架
Toy-Spring 简介 快速链接 源码下载 https://gitee.com/fencer911/toy-spring 1. ToySpring是一款轻量级 类SpringBoot框架,模仿sp ...
- Spring——入门介绍(以版本5.2为例)
目录 1.Spring框架概述 2.Spring入门案例 3.IoC介绍 (1)IoC概述 (2)IoC底层原理 (3)IoC接口 4.IoC操作--Bean 管理 (1)Bean 管理概述 (2)B ...
- Spring 和 SpringBoot 最核心的 3 大区别,详解!
作者:乐傻驴 uee.me/cNDC8 概述 对于 Spring和 SpringBoot到底有什么区别,我听到了很多答案,刚开始迈入学习 SpringBoot的我当时也是一头雾水,随着经验的积累.我慢 ...
- IDEA下——Spring入门程序
创建一个Maven的项目,我的项目结构如下: 在pom文件里写下需要导入的依赖: <?xml version="1.0" encoding="UTF-8" ...
- spring入门详细教程(五)
前言 本篇紧接着spring入门详细教程(三),建议阅读本篇前,先阅读第一篇,第二篇以及第三篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/ ...
- Spring入门详细教程(四)
前言 本篇紧接着spring入门详细教程(三),建议阅读本篇前,先阅读第一篇,第二篇以及第三篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/ ...
- Spring入门详细教程(三)
前言 本篇紧接着spring入门详细教程(二),建议阅读本篇前,先阅读第一篇和第二篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/p/101 ...
- Spring入门详细教程(二)
前言 本篇紧接着spring入门详细教程(一),建议阅读本篇前,先阅读第一篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/p/1016553 ...
- Spring入门介绍:
Spring入门介绍 Spring诞生: 创建Spring的目的就是用来替代更加重量级的的企业级Java技术 简化Java的开发 基于POJO轻量级和最小侵入式开发 通过依赖注入和面向接口实现松耦合 ...
最新文章
- ladar:16线激光雷达(雷神)
- 发新款电池!成本降低14%,特斯拉会继续降价吗?
- Python的Requests库官方文档
- mysql是哪五个字符集_MySQL中涉及的几个字符集
- 20172327 2017-2018-2 《程序设计与数据结构》第五周学习总结
- 玛丽莲·梦露从未公开的照片
- 表单PostGet两个长度限制问题的分析
- Code Review
- 用JSLint+Ant检验HTML代码
- Customizing AxWebBrowser, make it powerful
- 黑马程序员___Java基础[09-IO]
- VS2015sql本地服务器为空,详解VS2015自带LocalDB数据库用法实例
- java api 8 中文_java8 JDK1.8 API 中文 翻译版 java帮助文档
- android 锁屏显示消息格式,通知!在锁屏上显示Android通知 | MOS86
- 计算机Excel电子表格处理文件,2018计算机应用基础-Excel电子表格题目
- 关于SRE方法论的一些笔记
- 日本麻将中的牌型名称,充满格调与文艺
- 实验吧-杯酒人生(凯撒解密,维基利亚密码)
- android profile 打包_Android 利用 Managed Profile 确保兼容性
- 有没有Type-C接口的无线投屏器?HDMI、USB、Type-C接口的无线投屏器又有什么区别呢?