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 ...
随机推荐
- ES6与ES2015、ES2016以及ECMAScript的区别
1. ECMAScript 和 JavaScript 的关系 ECMAScript 和 JavaScript 的关系是,前者是后者的规格,后者是前者的一种实现. javascript是netscape ...
- erlang学习笔记
安装 Ubuntu Server上: sudo apt-get install erlang 如果安装时下载 太慢,可手工下载deb包( esl-erlang_16.a-rc1_ubuntu_prec ...
- 【原创】Dubbo 2.7.8多个远程代码执行漏洞
马上年底了,发现年初定的几个漏洞的KPI还没来得及完成,趁着最近有空赶紧突击一波,之前业务部门被爆过Dubbo的漏洞,干脆就把Dubbo拖过来挖一把.之前没用过Dubbo,既然要挖它就先大体了解了一下 ...
- 构建工具之Maven的使用(一)
一.前言 对于开发一个Java项目,上线之前会通过编译,测试,打包,部署这几个构建过程,如果文件较少,我们可以使用java-->javac-->jar这些命令去完成上述的构建流程.但是当工 ...
- Java通过SSLEngine与NIO实现HTTPS访问
Java使用NIO进行HTTPS协议访问的时候,离不开SSLContext和SSLEngine两个类.我们只需要在Connect操作.Connected操作.Read和Write操作中加入SSL相关的 ...
- idea 生成 javaDoc
idea 生成 javaDoc 使用命令 Generate javaDoc - 直接输入javadoc就可以了 Generate JavaDoc scope 3个区域,一般选择第三项自定义,选择模块, ...
- NOIP 模拟 $24\; \rm matrix$
题解 \(by\;zj\varphi\) 发现 \(\rm n,m\) 都很小,考虑分行状压. 但是上一行和下一行的按钮状态会对当前行造成影响,所以再枚举一个上一行的按钮状态. 因为对于两行,只有如下 ...
- idea中使用docker插件部署项目
安装docker 如果你之前安装过 docker,请先删掉 sudo yum remove docker docker-common docker-selinux docker-engine 安装一些 ...
- 在VS工程中,添加c/c++工程中外部头文件(.h),lib库,dll库的基本步骤
选择工程,右键-工程属性 其中: VC++目录 -->包含目录,对所有的项目及未来新建的项目都有效 c/c++-->常规-->附加包含目录,仅对当前项目有效 绝对路径设置方法: 在V ...
- windows下删除文件夹里的 .svn
windows下: 删除文件夹里的 .svn, cmd 进入相应目录 运行 for /r ./ %a in (./) do @if exist "%a/.svn" rd ...