欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringBoot框架学习

程序员文章站 2022-03-08 18:09:39
...

SpringBoot框架

一、什么是SpringBoot

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
SpringBoot框架中还有两个非常重要的策略:开箱即用和约定优于配置。开箱即用,Outofbox,是指在开发过程中,通过在MAVEN项目的pom文件中添加相关依赖包,然后使用对应注解来代替繁琐的XML配置文件以管理对象的生命周期。这个特点使得开发人员摆脱了复杂的配置工作以及依赖的管理工作,更加专注于业务逻辑。约定优于配置,Convention over configuration,是一种由SpringBoot本身来配置目标结构,由开发者在结构中添加信息的软件设计范式。这一特点虽降低了部分灵活性,增加了BUG定位的复杂性,但减少了开发人员需要做出决定的数量,同时减少了大量的XML配置,并且可以将代码编译、测试和打包等工作自动化。
SpringBoot应用系统开发模板的基本架构设计从前端到后台进行说明:前端常使用模板引擎,主要有FreeMarker和Thymeleaf,它们都是用Java语言编写的,渲染模板并输出相应文本,使得界面的设计与应用的逻辑分离,同时前端开发还会使用到Bootstrap、AngularJS、JQuery等;在浏览器的数据传输格式上采用Json,非xml,同时提供RESTfulAPI;SpringMVC框架用于数据到达服务器后处理请求;到数据访问层主要有Hibernate、MyBatis、JPA等持久层框架;数据库常用MySQL;开发工具推荐IntelliJIDEA。

二、Spring的优缺点

优点:Spring是java企业版(J2EE)的轻量级替代品,无需开发重量级的Enterprise javaBean(EJB),Spring为企业级java开发提供了一个相对简单的方法,通过依赖注入和面向切面编程,用简单的java对象(Plain old java object,pojo)实现了EJB的功能。
缺点:Spring虽然简化了不少代码的编写,但是也增加了配置文件的编写以及注解的编写,此外,项目的依赖管理也很麻烦,在环境搭建时,需要分析导入哪些库的坐标,还要分析导入与之有依赖关系的其他库的坐标,一旦选择错了要依赖的版本,就会阻碍项目的开发。

三、SpringBoot的概述

SpringBoot对Spring的缺点进行改善和优化,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行切换,全身心地投入到逻辑业务的代码编写中,大大提高了效率。

(一)SpringBoot的特点

  • 入门更加简单
  • 开箱即用,没有代码生成,也无需XML配置,同时可以修改默认值来满足特定的配置
  • 提供了一些大型项目中常见的非功能特性,如嵌入式服务器、安全、指标、健康检测、外部配置等
  • SpringBoot不是对Spring功能的增强,而是提供了一种快速使用Spring的方式。

(二)SpringBoot的核心功能

  • 起步依赖:起步依赖本质上就是一个Maven项目对象模型(Project Object Model),定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。也就是将具备某种功能的坐标打包到一起,并提供一些默认的功能。
  • 自动配置:Spring中涉及到的很多配置比如SessionFactory的配置都由SpringBoot来帮我们完成。

四、SpringBoot快速入门

  1. 创建maven工程
    SpringBoot框架学习
  2. 添加SpringBoot的起步依赖

SpringBoot要求,项目需要继承SpringBoot的起步依赖spring-boot-starter-parent,往maven项目的pom.xml添加一下代码

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

SpringBoot要集成SpringMVC进行Controller的开发,所以项目要导入web的启动依赖。springboot进行web开发只需要导入web的启动依赖,它内部已经帮我们完成了整合spring跟springmvc了。

<dependencies>
 	<dependency>
 		<groupId>org.springframework.boot</groupId>
 		<artifactId>spring-boot-starter-web</artifactId>
 	</dependency>
 </dependencies>
  1. 编写springboot引导类

新建一个包com.springboot,在这个包下新建一个类名为MySpringBootApplication,并在类上加上注解@SpringBootApplication,将其声明为一个引导类,并且通过SpringApplication.run方法来运行以下这个引导类。通过控制台我们可以发现tomcat已经启动了。

package com.springboot;

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

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

运行结果如下:
SpringBoot框架学习

  1. 编写controller

新建一个包com.springboot.controller,在这个包下新建一个Controller类,里面有一个方法返回一个字符串,这个类要跟引导类放在同一个包下

package com.springboot.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class TestController {
	
	@RequestMapping("hello")
	@ResponseBody
	public String hello() {
		return "hello spirngboot";
	}
}

  1. 运行引导类,通过浏览器访问localhost:8080/hello,可以看到浏览器返回一个字符串hello springboot。

五、SpringBoot工程热部署

运行引导类之后,项目就被发布到tomcat上了,但是有的时候发布完之后我们又重新对项目的代码进行了修改,这个时候又得重新运行引导类来更新以下发布的项目。我们可以通过springboot工程热部署来解决这个问题,让springboot项目自动更新加载。实现很简单,就是在项目的pom.xml中添加一个坐标。

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

添加完之后,尝试修改controller返回的字符串,修改后直接刷新一下浏览器的页面,发现自动更新了。

需要注意的是,使用IDEA进行SpirngBoot热部署的话可能不能实现,应该IDEA默认是不自动编译的,需要到设置中去修改。到Compiler勾选上build project automatically。然后Ctrl+Shift+Alt+/,选择Registry,勾选compiler automake.allow.when.app.running即可。

六、eclipse快速创建SpringBoot工程

  1. 首先要在eclipse中下载一个插件,点击help-Eclipse Marketplace,搜索STS下载
  2. 下载安装之后新建一个项目,搜索Spring会选择Spring Starter Project
  3. 进行项目相关信息修改,坐标,版本,描述,包等等
    SpringBoot框架学习
  4. 点击next,在这里可以选择springboot项目的功能。比如要搭建一个实现web模块的功能就到Web一栏勾选。
    SpringBoot框架学习
    SpringBoot框架学习
  5. 点击finish,生成一个springboot的项目。
    SpringBoot框架学习
    打开生成的项目的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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.2.4.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>demo</name>
	<description>Demo project for Spring Boot</description>

	<properties>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
			<exclusions>
				<exclusion>
					<groupId>org.junit.vintage</groupId>
					<artifactId>junit-vintage-engine</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

新建的项目还自动帮我们生成了引导类。跟我们手动创建的一模一样。

package com.example.demo;

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

@SpringBootApplication
public class DemoApplication {

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

}