背景
在我看来编程是一棵树,编程语言就是这棵树由主干生长出来的树枝,而各种语言的框架则就像是树枝上的树叶,是当前这门语言的结晶,在实际的生产环境中扮演着重要角色,学习这些框架能够帮我们真正的具备实际开发能力,进而找到一份好的工作,有兴趣可以看看聊聊自学编程这篇文章,主要是我对于编程的一些看法,也许会对你有所启发。
何为Spring Boot
在说Spring Boot之前先要了解Spring,那么Spring是什么呢?Spring 框架是一个分层的、面向切面的Java应用程序的一站式轻量级解决方案,它是Spring技术栈的核心和基础,是为了解决企业级应用开发的复杂性而创建的。我们还是遵循之前所说的学习是一新事物时,先要略其大观,不求甚解。在这里先不管什么分层,面向切面,现在只需要知道Spring是一个Java EE的开发框架,帮助开发通俗意义上的Java后端。
那么Spring Boot又是什么呢?Spring Boot是Pivotal团队在Spring的基础上提供的一套全新的开源框架,其目的是为了简化Spring应用的搭建和开发过程。
Spring Boot去除了大量的 XML配置文件,简化了复杂的依赖管理。Spring Boot具有Spring一切优秀特性,Spring能做的事,Spring Boot都可以做,而且使用更加简单,功能更加丰富,性能更加稳定而健壮。
随着近些年来微服务技术的流行,Spring Boot也成了时下炙手可热的技术。Spring Boot集成了大量常用的第三方库配置,Spring Boot应用中这些第三方库几乎可以是零配置的开箱即用(out-of-the-box)大部分的 Spring Boot 应用都只需要非常少量的配置代码(基于Java的配置),开发者能够更加专注于业务逻辑。
由此可以看出Spring Boot是由Spring衍生出的,传统的Spring框架很多复杂的配置,而Spring Boot所做的就是使用合理的默认值简化Spring一系列的配置,提高开发效率,而使用合理的默认值就是Spring Boot中核心的设计思想“约定优于配置”。
上面我们已经介绍了什么是Spring,什么是Spring Boot,还是老规矩why比what更重要,为什么我们需要Spring Boot,它的优势是什么呢?
- 快速构建:使用Spring Initializr可以快速创建项目,同时提供了丰富的解决方案,便于快速集成各种解决方案,提升开发效率。
- 简化依赖:提供了丰富的Starters,简化Maven配置,避免版本兼容问题。
- 一键部署:内嵌Servlet容器,如Tomcat、Jetty,能够直接打包成可执行JAR文件独立运行,支持Jenkins、Docker,轻松实现自动化运维。
- 应用监控:自带Actuator监控组件,轻松监控服务的各项状态。使用Spring Boot Admin可以轻松部署功能完善的应用监控体系。
总的来说,Spring Boot让构建、编码、配置、部署、监控都变得非常简单。
开启Spring Boot之旅
项目创建
如下图所示,在IDEA中可以通过Spring Initializr快速创建项目,Group是公司,Artifact是项目名称,点击下一步即可创建一个Spring Boot项目。
项目结构
接下来我们看一下新建项目的项目结构,如下图所示
从上面可以看到,我们新建的test项目只有3个主要目录* src/main/java:程序开发以及主程序目录
- src/main/resources:配置文件和资源文件目录
- src/test/java:测试程序目录 然而一个完整的项目包括前台页面、model实体、数据库访问、公共基础类等非常多的文件和目录,Spring Boot建议目录如下图
如图中com.qstack.test为根目录应包括:* TestApplication.java:建议放到根目录下,是项目的启动类,Spring Boot项目只能有一个main()方法入口。
- comm:建议放置公共的类,如全局的配置文件、工具类等。
- model:主要用于实体(Entity)。
- repository:主要用于数据库访问层的代码
- service:主要是业务类代码
- web:负责前台页面访问Controller路由 resources目录下包括:
- static:存放web访问的静态资源如JS、CSS、图片等。
- templates:存放页面模版
- application.properties: 存放项目的配置信息 test目录存放单元测试代码,目录结构与java目录结构相同。pom.xml用于配置项目依赖包以及其他配置。
pom.xml解析
pom.xml是Maven项目中非常重要的配置文件,我们新建的test项目的pom.xml内容如下:
<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<span class="hljs-name"modelVersion>
<parent>
<groupId>org.springframework.boot<span class="hljs-name"groupId>
<artifactId>spring-boot-starter-parent<span class="hljs-name"artifactId>
<version>2.6.5<span class="hljs-name"version>
<relativePath/>
<span class="hljs-name"parent>
<groupId>com.qstack<span class="hljs-name"groupId>
<artifactId>test<span class="hljs-name"artifactId>
<version>0.0.1-SNAPSHOT<span class="hljs-name"version>
<name>test<span class="hljs-name"name>
<description>test<span class="hljs-name"description>
<properties>
<java.version>1.8<span class="hljs-name"java.version>
<span class="hljs-name"properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot<span class="hljs-name"groupId>
<artifactId>spring-boot-starter<span class="hljs-name"artifactId>
<span class="hljs-name"dependency>
<dependency>
<groupId>org.springframework.boot<span class="hljs-name"groupId>
<artifactId>spring-boot-starter-web<span class="hljs-name"artifactId>
<span class="hljs-name"dependency>
<dependency>
<groupId>org.springframework.boot<span class="hljs-name"groupId>
<artifactId>spring-boot-starter-test<span class="hljs-name"artifactId>
<scope>test<span class="hljs-name"scope>
<span class="hljs-name"dependency>
<span class="hljs-name"dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot<span class="hljs-name"groupId>
<artifactId>spring-boot-maven-plugin<span class="hljs-name"artifactId>
<span class="hljs-name"plugin>
<span class="hljs-name"plugins>
<span class="hljs-name"build>
<span class="hljs-name"project>
pom.xml主要包含四个部分,下面是 「项目的描述信息」 。groupId是项目的包路径,artifactId是项目名称,version是项目版本号,name是项目名称,descriptoion是项目描述。
<groupId>com.qstack<span class="hljs-name"groupId>
<artifactId>test<span class="hljs-name"artifactId>
<version>0.0.1-SNAPSHOT<span class="hljs-name"version>
<name>test<span class="hljs-name"name>
<description>test<span class="hljs-name"description>
pom.xml还包含 「项目的依赖」 ,项目的依赖信息分为parent和dependencies两部分,以下是parent部分。parent是配置父级目录的信息,Maven支持项目的父子结构,引入后会默认继承父级的配置,此版本引入spring-boot-starter-parent定义Spring Boot的基础版。
<parent>
<groupId>org.springframework.boot<span class="hljs-name"groupId>
<artifactId>spring-boot-starter-parent<span class="hljs-name"artifactId>
<version>2.6.5<span class="hljs-name"version>
<relativePath/>
<span class="hljs-name"parent>
dependencies是配置项目所需要的依赖包,Spring Boot体系内依赖组件不需要填写具体版本号。
<dependencies>
<dependency>
<groupId>org.springframework.boot<span class="hljs-name"groupId>
<artifactId>spring-boot-starter<span class="hljs-name"artifactId>
<span class="hljs-name"dependency>
<dependency>
<groupId>org.springframework.boot<span class="hljs-name"groupId>
<artifactId>spring-boot-starter-web<span class="hljs-name"artifactId>
<span class="hljs-name"dependency>
<dependency>
<groupId>org.springframework.boot<span class="hljs-name"groupId>
<artifactId>spring-boot-starter-test<span class="hljs-name"artifactId>
<scope>test<span class="hljs-name"scope>
<span class="hljs-name"dependency>
<span class="hljs-name"dependencies>
下面是 「项目构建的公共变量」 ,指明了jdk版本。
<properties>
<java.version>1.8<span class="hljs-name"java.version>
<span class="hljs-name"properties>
最后一部分是**「构建配置信息」**
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot<span class="hljs-name"groupId>
<artifactId>spring-boot-maven-plugin<span class="hljs-name"artifactId>
<span class="hljs-name"plugin>
<span class="hljs-name"plugins>
<span class="hljs-name"build>
hello world
首先检查一下pom.xml中有没有以下依赖,没有则加上。
<dependency>
<groupId>org.springframework.boot<span class="hljs-name"groupId>
<artifactId>spring-boot-starter-web<span class="hljs-name"artifactId>
<span class="hljs-name"dependency>
在之前新建的web目录下新建HelloController如下
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello() {
return "Hello @Spring Boot!!!";
}
}
然后启动项目,在浏览器输入http://localhost:8080/hello
-
JAVA
+关注
关注
19文章
2954浏览量
104510 -
开发
+关注
关注
0文章
365浏览量
40796 -
spring
+关注
关注
0文章
338浏览量
14299
发布评论请先 登录
相关推荐
评论