SpringBoot框架学习
文章目录
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快速入门
- 创建maven工程
- 添加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>
- 编写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);
}
}
运行结果如下:
- 编写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";
}
}
- 运行引导类,通过浏览器访问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工程
- 首先要在eclipse中下载一个插件,点击help-Eclipse Marketplace,搜索STS下载
- 下载安装之后新建一个项目,搜索Spring会选择Spring Starter Project
- 进行项目相关信息修改,坐标,版本,描述,包等等
- 点击next,在这里可以选择springboot项目的功能。比如要搭建一个实现web模块的功能就到Web一栏勾选。
- 点击finish,生成一个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);
}
}
上一篇: 实例讲解HTML标签解释成DOM节点
下一篇: Java并发编程基础盘点3 - CAS