Spring Boot构建基础Web项目

  • A+
所属分类:Java片段

一、SpringBoot起步


1.1、Spring Boot简介

Spring Boot是伴随着Spring 4.0共同诞生的,它的目的就是简化spring的配置及开发,并协助开发人员可以整体管理应用程序的配置而不再像以前那样需要做大量的配置工作。

它提供了很多开发组件,并且内嵌了web应用容器,如tomcat和Jetty等。其目的便是使我们的开发变得简化并且能大幅度提高开发人员的开发效率,为了简化Spring功能的配置我们可以引入或启动我们需要的Spring功能。

这样做的好处就是避免开发人员过多的对框架的关注,而把更多的精力与时间放在系统的业务逻辑代码中
Spring Boot构建基础Web项目

优 点:

  1. 基本上不需要什么配置,添加依赖开箱即用
  2. 可以不依赖tomcat等外部容器来独立运行的web项目,一个jar包就是一个服务
  3. 每个jar包都相当于一个内嵌的Tomcat,拥有独立的访问端口
  4. pom文件配置更简化,只需要在 pom 文件中添加starter-web 依赖即可创建web项目。
  5. SpringBoot不需要任何xml文件配置而能实现所有的spring配置。
  6. 通过以上可以看出,SpringBoot可以极大地提高了开发、部署效率

1.2、起步依赖

开发工具:Idea

开发环境:JDK8

SpringBoot的版本更新迭代很快,目前最新的版本是2.4.0,为了方便大家更好的熟悉SpringBoot项目的结构和依赖项,这里我从Maven项目构建SpringBoot Web项目(当然,spring boot也可以用于创建非web项目)。Spring Boot采用2.3.6版本

pom文件添加以下依赖

    <!--Spring boot父依赖,控制SpringBoot版本-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.6.RELEASE</version>
        <relativePath/>
    </parent>

    <dependencies>
        <!--Spring Boot Web项目依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

在resources目录下创建application.yml文件和static文件夹

--注:yml文件与properties文件,可以自由选择,个人习惯于yml,yml的层次感比较强,看起也更加清晰直观

properties是用“="等于符号进行k-v连接,而yml则是用”: “冒号加空格进行连接

application.yml文件与static文件夹都不是必须的,没有这两者,项目依然能够正常启动,这就是springboot的开箱即用

然后添加主启动类,在主启动类上添加@SpringBootApplication注解

并在main方法调用SpringApplication.run静态方法,并传入主启动类的字节码对象及参数args即可

具体代码如下:

package com.kjyfx;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
 * @Description TODO
 * @Date 2020/11/27 23:03
 * @Created by moyun
 */
@SpringBootApplication
public class Application {

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

spring boot主要项目结构如下:

Spring Boot构建基础Web项目

1.3、基本配置

application.yml: 主要的配置文件,在项目启动时,会首先去加载这里面的配置,如果没有配置,则springboot会采用默认配置

static: springboot的默认静态资源路径,如果是前后端分离的项目,可以无需静态资源文件夹,此外springboot共有以下几个默认的静态资源路径

classpath:/META-INF/resources/ 
classpath:/resources/ 
classpath:/static/
classpath:/public/

以上的配置是在org.springframework.boot.autoconfigure.web.ResourceProperties这个类中,定义了一个资源路径的数组,其中"/"代表服务的根路径,只要将静态资源放到这几个目录下,就能正常访问

Spring Boot构建基础Web项目

例如创建1.html,2.html,3.html,4.html,5.html五个静态页面,输入:http://localhost:8080/1.html,只有5.html不能访问

并且访问优先级

/META-INF/resources/

大于 /resources/

大于 /static/

大于 /public/

如果四个名字相同的html页面,如四个1.html依次放到以上四个目录下,那么能被访问到的,只能是/META-INF/resources/目录下的1.html

Spring Boot构建基础Web项目

此外,application.yml还有很多配置

1.3.1、修改启动banner

如果想修改默认的启动banner,可以在resources目录下创建一个banner.txt文件

在线生成banner的网址有很多(如:http://patorjk.com/software/taag等)

这样springboot启动时就会默认加载resources目录下的banner.txt文件

Spring Boot构建基础Web项目

1.3.2、服务进程pid信息

当项目在linux中运行,如果需要重启项目,就必须先kill这个服务的进程id,查找进程id的方法有很多(如ps -ef再进行管道和awk输出等)

这里我们可以采用配置项目在启动时生成进程的pid文件,然后只需要cat一下pid文件就能清楚的知道当前项目的进程id,对于重启脚本的编写也很方便

具体实现如下:

package com.kjyfx;

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

/**
 * @Description TODO
 * @Date 2020/11/27 23:03
 * @Created by moyun
 */
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(Application.class);
        app.addListeners(new ApplicationPidFileWriter());
        app.run(args);
    }
}

默认生成的application.pid文件与jar包同级(idea中与target同级)

Spring Boot构建基础Web项目

1.3.3、其他基础配置

server:
  port: 9000                                #修改Tomcat默认端口,默认为8080端口
  servlet:
    context-path: /base                 #修改访问的根路径,默认为/
spring:
  application:
    name: baseServer                   #程序名
  profiles:
    active: dev                             #以application-dev.yml配置文件启动
  mvc:
    static-path-pattern: /**              #静态资源访问前缀,/**代表不需要加其他的前缀
  resources:                                #静态资源访问路径
    static-locations: file:E:/dist       #修改默认的静态资源路径        
  banner:
    location: classpath:./banner.txt  #修改默认banner的加载位置
  pid:
    file: D:/base.pid                     #修改默认进程pid文件的保存位置

对于配置文件,一个项目可能有开发环境、测试环境与生产环境,不同的环境配置文件不一样

对于这种情况,我们就可以使用spring.profiles.active配置,如值为dev(这个值随便取,只要与文件名对应即可),

那么springboot启动时将会对application进行一个拼接,拼成接application-dev.yml文件,之后加载application-dev.yml中的配置信息,如下:

Spring Boot构建基础Web项目

在application.yml中配置的端口是9000,路径为/base,而在application-dev.yml中配置的端口为9001,路径为/dev

springboot项目启动时,首先它会加载application.yml中的配置,之后再去加载application-dev.yml中的配置

如果application-dev.yml有与application.yml相同的配置,则它会进行覆盖

1.3.4、springboot项目的配置文件加载优先级顺序

springboot项目会从以下四个地方加载application.yml配置文件,加载顺序由高到低,高优先级内容会覆盖优先级低的内容

-file:./config/application.yml         优先级最高
-file:./application.yml
-classpath:./config/application.yml
-classpath:./application.yml        优先级最低

在idea进行开发时,默认采用的就是第四种加载方式,最低的优先级

但是在linux上进行项目部署,只有将配置文件进行独立管理才方便编辑修改与项目部署

可以在jar包同级目录创建config文件夹放入application.yml配置文件,也可以直接将配置文件放到与jar包同级目录

Spring Boot构建基础Web项目

对于springboot的web项目简单配置差不多就这些,主启动类Application必须放在最外层

熟悉springboot项目的朋友应该知道controller、serveice和dao三层,如果把主启动类放在这些包下面,是无法正常启动项目的

因为SpringBoot在启动时,会通过反射去加载跟主启动类平级或者下级的class字节码文件,所以,Application主启动类必须放在最外层

PDF文档下载

链接:https://pan.baidu.com/s/1zaiVbMPYfldaexK88ew2Ow
提取码:my10

  • 云说Java
  • 关注公众号获取更多资源
  • weinxin
  • Java栈记
  • 关注公众号获取更多资源
  • weinxin
墨云

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: