Spring Boot学习(一)——Spring Boot介绍
Spring Boot介绍
Spring Boot简介
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
SpringBoot基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。
从上面两段介绍,对Spring Boot应该有一个初步的认识了:
- 源自于Spring4.0框架
- 简化了Spring应用开发
- 集成了大量的框架
这就是我们对Spring Boot的初步认识,我们在通过与Spring框架的对比,来弄清楚Spring框架已经很优秀了,为什么还需要Spring Boot?
Spring Boot与Spring
Spring
我们学习完JavaSE之后我们就步入了学习JavaEE的过程,我们首先学的就是JavaWeb(Tomcat和Servlet),后面就开始学习Spring,我相信在学习Spring的时候,大家看的第一张图应该就是那张将Spring所有主要模块罗列的图了。而Spring框架其实包含了很多的功能模块,并且我们可以根据项目需求使用其中某些模块。
拿Spring MVC框架举例,在我们使用Spring MVC框架进行开发时我们会发现比导入jar包更多的是构建Spring MVC项目时我们需要配置的文件——application.xml,springmvc-config.xml,log4j.properties,db.properties...,这一大堆的配置文件还是项目不是很大的情况下,如果项目够大,为了规范代码,配置文件肯定更多更繁杂,最关键的是,其中大部分代码在多个web项目中配置内容大多相同,不同的只是参数,即使是是用了Spring提供的Java注解,配置文件写起来也还是麻烦,这个时候要是可以帮我们自动写配置文件就好了,我们只需要表明关键的配置参数,一个web项目就生成了,这样岂不是不用浪费时间在写配置文件和书写依赖关系上了?所以Spring Boot出现了。
Spring Boot
Spring Boot基本上是Spring框架的扩展,它消除了设置Spring应用程序所需的XML配置,为更快,更高效的开发生态系统铺平了道路。有点类似于maven,maven集成了全部jar,而Spring Boot集成了绝大部分框架。
当然不是说Spring Boot不需要配置,Spring Boot需要的配置文件类似于Maven的POM,maven就POM一个配置文件,而Spring Boot也就一个配置文件足以,并且配置规则不难,大部分配置已经默认好了。关键是Spring Boot还帮助我们进行了依赖之间的管理和依赖的版本控制。降低了依赖之间的冲突。
以下是Spring Boot中的一些特点:
- 创建独立的spring应用(Spring不再是配角)。
- 嵌入Tomcat, Jetty Undertow 而且不需要部署他们。
- 提供的“starters” poms来简化Maven配置(一站式管理依赖)
- 尽可能自动配置spring应用。
- 提供生产指标,健壮检查和外部化配置
- 绝对没有代码生成和XML配置要求
区别
相信介绍之后两者区别很明显了:
- 项目搭建和开发过程Spring Boot要优于大部分Spring应用开发,并且简化了Spring应用。并不需要配置大量的配置文件,也不需要繁杂的开发步骤,Spring Boot继承了Spring的优点并在其扩展了自己的特点(就是包含大量框架)。
- 解决了项目中依赖之间的不稳定性,依赖冲突的问题。Spring Boot帮我们一站式管理了依赖,而Spring要在maven中显示声明大部分依赖。
- Spring Boot内部嵌入了服务端,而且不需要部署,Spring 需要我们手动配置和部署(即使用了idea)
当然两者区别肯定是不只上诉三点的,这只是两者最直观,初学最开始感受到的区别。
Spring Boot的初步使用
使用Spring Boot搭建一个简单的Spring MVC 项目:
我们先用maven创建一个普通的java项目,项目结构如图:
至于为什么这个普通的Java项目是web项目,学到后面就详细了解了,我们先用Spring Boot跑起来。
下一步就是使用maven导入Spring Boot的依赖,这里我们这里就采用继承的方式。
pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>01_test_springBoot_web</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 配置要继承父项目,继承Spring Boot中的资源 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.10.RELEASE</version>
</parent>
<!-- 使用dependencyManagement 来管理
通过上面方式,就可以获取spring-boot-dependencies 2.1.10.RELEASE.pom文件中dependencyManagement配置的jar包依赖
相当于拿到了spring-boot-dependencies 中的pom文件中dependencyManagement中声明的依赖
-->
<!-- <dependencyManagement>-->
<!-- <dependencies>-->
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-dependencies</artifactId>-->
<!-- <version>2.1.10.RELEASE</version>-->
<!-- <type>pom</type>-->
<!-- <scope>import</scope>-->
<!-- </dependency>-->
<!-- </dependencies>
</dependencyManagement>-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
看我们项目的maven的依赖
展示的有7个主体依赖(并不是所有依赖),其中有Spring boot、json、tomcat、Spring web、Spring webmvc、validator(参数校验)。
我们的maven中只显示依赖了spring-boot-starter-web
,这个玩意称为Spring web的启动器,Spring Boot中集成了Spring web框架,所以Spring Boot会自动将Spring Web框架以及所需的依赖都帮我们导入,这就体现了Spring Boot对依赖的统一管理特点。
接下来我们开始编写逻辑代码,在com.lyl.controller下新建MyController.java:
package com.lyl.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class MyController {
@ResponseBody
@RequestMapping("show")
public String show(){
return "Hello Spring Boot!";
}
}
controller层写好了,接下来是不是应该将项目部署到我们本地Tomcat中呢?按理来说我们是部署不了的,因为这个时候项目中并没有webapp文件夹,也没有WEB-INF,那我们如何运行呢?
前面说我们导入的依赖中有Tomcat的依赖,也就是说Spring Boot本身就为我们这个项目内嵌了Tomcat,我们可以直接在Spring Boot上运行我们的web项目。
但是我们不知道从哪里开始运行,Spring Boot为我们提供了应用入口,其实就是一个普通的Java类,但是Spring Boot官方建议我们将入口类放在根目录下。
MyApplication.java:
package com.lyl;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
// 可以自动扫描当前类的包及其子包下的所有注解
/*
@SpringBootApplication代表的是组合注解:
@Configuration
@EnableAutoConfiguration
@ComponentScan
*/
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class,args);
}
}
运行main得出结果:
从中我们可以看到Tomcat开放的端口号,以及web项目的根url
浏览器输入:localhost:8080/show
成功接收到服务器返回的信息!代表我们使用Spring Boot搭建web项目已经成功,我们使用maven将我们项目打包,在target中发现war包没有了,取而代之的竟然是jar包!为什么会这样?jar包可以被java的编译器识别,而war包是给tomcat的,也就是说,Spring Boot帮我们内置了tomcat(需要依赖),所以我们就省去了部署项目这一步骤,tomcat的相关配置也只要在Spring Boot配置文件中配置就好。
到此我们对Spring Boot应该有了一个初步的了解。
Spring Boot的理解
Spring Boot不是Spring的替代品,Spring Boot依赖Spring框架来管理对象的依赖。Spring Boot也不是精简版的Spring,Spring Boot为Spring做好了面向各种企业级产品的准备。
我们如果Spring基础不扎实,学习Spring Boot时遇到一些知识点可能理解困难,效率不高。所以我们首先应该学好Spring框架的基础。核心依旧是Spring。
在我们以往使用Spring框架,一般是使用Spring中的模块,web容器启动时再去进行Spring容器的注册和初始化,而Spring Boot是以Spring启动后去加载web容器,所以叫创建独立的Spring应用。
Spring Boot学习(一)——Spring Boot介绍的更多相关文章
- Spring Cloud 学习 之 Spring Cloud Eureka(源码分析)
Spring Cloud 学习 之 Spring Cloud Eureka(源码分析) Spring Boot版本:2.1.4.RELEASE Spring Cloud版本:Greenwich.SR1 ...
- Spring Cloud 学习 之 Spring Cloud Eureka(搭建)
Spring Boot版本:2.1.4.RELEASE Spring Cloud版本:Greenwich.SR1 文章目录 搭建服务注册中心: 注册服务提供者: 高可用注册中心: 搭建服务注册中心: ...
- Spring Cloud学习笔记--Spring Boot初次搭建
1. Spring Boot简介 初次接触Spring的时候,我感觉这是一个很难接触的框架,因为其庞杂的配置文件,我最不喜欢的就是xml文件,这种文件的可读性很不好.所以很久以来我的Spring学习都 ...
- Spring Boot学习笔记——Spring Boot与MyBatis的集成(项目示例)
1.准备数据库环境 # 创建数据库 CREATE DATABASE IF NOT EXISTS zifeiydb DEFAULT CHARSET utf8 COLLATE utf8_general_c ...
- spring cloud学习(六)Spring Cloud Config
Spring Cloud Config 参考个人项目 参考个人项目 : (希望大家能给个star~) https://github.com/FunriLy/springcloud-study/tree ...
- Spring 框架学习(1)--Spring、Spring MVC扫盲
纸上得来终觉浅,绝知此事要躬行 文章大纲 什么是spring 传统Java web应用架构 更强的Java Web应用架构--MVC框架 Spring--粘合式框架 spring的内涵 spring核 ...
- Spring Cloud 学习 (九) Spring Security, OAuth2
Spring Security Spring Security 是 Spring Resource 社区的一个安全组件.在安全方面,有两个主要的领域,一是"认证",即你是谁:二是& ...
- Spring框架学习03——Spring Bean 的详解
1.Bean 的配置 Spring可以看做一个大型工厂,用于生产和管理Spring容器中的Bean,Spring框架支持XML和Properties两种格式的配置文件,在实际开发中常用XML格式的配置 ...
- Spring框架学习02——Spring IOC 详解
1.Spring IOC的基本概念 IOC(Inverse of Control)反转控制的概念,就是将原本在程序中手动创建对象的控制权,交由Spring框架管理.当某个Java对象(调用者)需要调用 ...
- Spring Boot学习笔记---Spring Boot 基础及使用idea搭建项目
最近一段时间一直在学习Spring Boot,刚进的一家公司也正好有用到这个技术.虽然一直在学习,但是还没有好好的总结,今天周末先简单总结一下基础知识,等有时间再慢慢学习总结吧. Spring Boo ...
随机推荐
- VMware 安装 Centos 7 虚拟机配置网络
在 Windows 机器上如果想使用 Linux 环境,最方便的方式莫过于使用虚拟机,最常用的软件各位肯定也不陌生,大名鼎鼎的 VMware . 不过这玩意有点稍稍不是那么智能,每次安装 Linux ...
- 解决ftp登录问题:500 OOPS: cannot change directory:/home/xxx 500 OOPS: child died
.personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...
- JavaScript学习02(js快速入门)
快速入门 基本语法 JavaScript的语法和Java的语法类似,每个语句以;结束,语句块用{...}.但是JavaScrip并不强制要求在每个语句的结尾加;,浏览器中负责执行JavaScript代 ...
- PTA数据结构习题集
https://blog.csdn.net/qq_43733499/category_8956159.html https://www.cnblogs.com/nonlinearthink/tag/% ...
- MySQL-04-SQL简单介绍
SQL介绍 SQL 结构化查询语言 5.7 以后符合SQL92严格模式 通过sql_mode参数来控制 常用SQL分类 DDL:数据定义语言 DCL:数据控制语言 DML:数据操作语言 DQL:数据的 ...
- Linux UDP服务器编程
UDP主要使用sendto()和recvfrom() recvfrom() 函数原型如下: #include <sys/types.h> #include <sys/socket.h ...
- ReentrantReadWriteLock(读写锁)
为了提高性能,java提供了读写锁, 读锁: 在读的地方使用读锁,可以多个线程同时读. 写锁: 在写的地方使用写锁,只要有一个线程在写,其他线程就必须等待 例子: public static Read ...
- 《深入浅出vue.js》阅读笔记之数组变化侦测
1.如何追踪变化 数组的侦测方式和对象不同,比如: this.list.push(1) 此时并不会像改变对象一样触发setter. 同理,要侦测数组的变化意味着我们在改变数组的时候得到通知,如图,我们 ...
- 浅看spa单页应用路由
路由观察浏览器的URL的变更.当URL 变更时,路由会解析它并生成一个新的路由实例. 一个基本的路由是这样的: class Router { private _defaultController: s ...
- C# 中的反射机制
C# 中的反射 首先我们通过两个实例来说明反射的大体概念.B超:大家体检的时候大概都做过B超,B超可以透过肚皮探测到你内脏的生理情况.这是如何做到的呢?B超是B型超声波,它可以透过肚皮通过向你体内发射 ...