2、Spring Boot——Spring Boot简介及三种创建方式

1、Spring的简介
Spring Boot官网地址:https://spring.io/projects/spring-boot/
目前最新的稳定版本是2.1.5
Spring Boot是Spring家族的一个产品

在这里插入图片描述

SSM框架创建的Web工程,要使项目跑起来,需要大量的配置,有时候搭建环境都要搭建半天,各种配置文件,XML文件等等。需要我们手动配置的地方非常多,而且配置很多都是重复的,每一个工程都要去搭建环境,这样不仅徒增工作量,而且在跨平台部署时容易出问题。而使用Spring Boot可以让我们快速创建一个基于Spring的项目,而让这个Spring项目跑起来我们只需要添加少量的配置就可以了。Spring Boot主要有如下核心功能:
1、独立运行的Spring项目(Spring Boot可以以jar包的形式来运行,运行一个Spring Boot项目,我们只需要通过java -jar xx.jar类运行,非常方便)。
2、内嵌Servlet容器(Spring Boot可以内嵌tomcat,这样我们无需以war包的形式部署项目)
3、提供starter简化Maven配置(使用Spring或者SpringMVC我们需要添加大量的依赖,而这些依赖很多都是固定的,这里Spring Boot通过starter能够帮助我们简化Maven配置)。
4、自动配置Spring
5、准生产的应用监控
6、无代码生成和xml配置

Spring Boot目前最新的2.1.5版本对运行环境的要求:
1、JDK8以上
2、编译java11
3、Spring 5.1.7
4、构建工具 Maven3.3以上,Grade4.4以上
5、Tomcat 9.0,servlet4.0(自带)

2、Spring Boot项目的创建
Spring Boot本质上就是一个Maven工程,但是它在创建过程中需要添加parent和Maven插件,初学者总会怀疑它到底是不是Maven工程,实际上它就是Maven,因为它要加的东西比较多,所以我们有几种不同的方式来创建它。
2.1 在线创建
在线创建网址https://start.spring.io/
在这里插入图片描述在这里插入图片描述使用开发工具打开解压后的文件就可以在里面进行开发了

2.2 开发工具创建
在这里插入图片描述然后输入项目名包名等
在这里插入图片描述选择依赖
在这里插入图片描述创建成功,和在线创建的是一样的
在这里插入图片描述
2.3 使用Maven创建
使用Maven创建无论是在什么情况下都能创建成功,不依赖网站,首先创建一个普通的Maven工程,在pom.xml文件中添加web依赖,因为没有添加parent所以需要手动添加版本号

<dependency>
            <!-- spring-boot-starter-xx是spring boot官方提供的依赖
                 xx-spring-boot-starter就不是官方提供的
            -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.1.5.RELEASE</version>
        </dependency>
    </dependencies>

创建Spring Boot的启动类


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

创建一个控制器用于测试

@RestController
public class HelloController {
    @GetMapping("/hello")
    public String hello(){
        return "hello spring boot!";
    }
}

通过启动App类来启动Spring Boot工程
在这里插入图片描述
3、Spring Boot中的parent的含义
对于大家来说有没有parent最直观的感受就是,在pom.xml文件中要不要加版本号,有parent要加版本号,版本号在parent中都是定义好了的。那么parent到底要不要加呢?这是分情况的,我们现在自己是可以加的,但是如果是在公司里面开发,不一定加,因为一个Maven项目只能有一个parent,如果加了这个默认的parent,意味着我就不能再加其他的parent了,但是在公司里面,一般我们的项目可能需要集中管理,公司自己会提供一个父工程,所有的工程的parent都要是公司定义好的parent,这样就只能继承自公司的parent,就不能自己写parent了。那这种时候parent里面提供的东西,我们该如何处理。

parent提供的功能包括:
1、定义了java编译版本为1.8
2、使用了UTF-8格式编码
3、继承自spring-boot-dependencies,这里边定义了依赖的版本,也正是因为继承了这个依赖,所以我们在写依赖时才不需要写版本号。
4、执行打包操作的配置
5、自动化的资源过滤
6、自动化的插件配置
7、针对application.properties和application.yml的资源过滤,包括通过profile定义的不同环境的配置文件,例如application-dev.properties和application-dev.yml

请注意,由于application.properties和application.yml文件接受Spring样式占位符$ {…}, 因此Maven过滤更改为使用@ … @占位符,当然开发者可以通过设置名为resource.delimiter的Maven屈性来覆盖@ … @占位符。

当我们创建一个Spring Boot项目后,我们可以在本地Maven仓库中看到这个具体的parent文件在本地仓库的C:\Users\豆子.m2\repository\org\springframework\boot目录下可以找到你要找的parent的名称目录下,找到使用的版本名的文件下,里面有一个.pom文件,文件里面有具体的配置。

版本相关配置
在这里插入图片描述文件过滤
在这里插入图片描述它自己也有一个parent,里面定义了所有依赖的版本号。
如果要使用公司的parent,那就不能自己定义parent了,这就只能自己把parent中所定义的配置,版本号,资源过滤等等自己手动定义好。或者把这些配置定义到公司指定的parent上
可以自己定义dependencyManagement就不用写版本号了
在这里插入图片描述
4、项目结构介绍在这里插入图片描述5、启动类
我们发现Spring Boot项目一创建就可以使用,可以扫描到所有的注解,那么Spring Boot没有XML文件,那就肯定是像上一篇一样,是用注解的方式扫描的。我们可以看到在启动类中加了一个注解叫@SpringBootApplication,进入这个注解我们可以看到
在这里插入图片描述而在@SpringBootConfiguration注解中其实就是三个注解组合的。
第一个@Configuration注解(配置类注解)
在这里插入图片描述第二个@EnableAutoConfiguration注解是开启SpringMVC的自动化配置。
第三个@ComponentScan注解(默认扫描当前类所在包下面的所有bean,以及当前类所在的包下面的子包下面的所有备案)所以以下配置不写具体的包位置,只除去了不用扫描的,所以我们在定义的时候一般会把启动类放在根包下,如果非要放在其他包,那就在启动类从新指定@ComponenScan,重新指定basepackage。
在这里插入图片描述
@SpringBootApplication是一个组合注解,组合注解就是把几个注解组合在一起,它具有那几个注解的所有功能。也可以在启动类的前面加这三个注解,同样能实现。

6、banner配置
banner就是在Spring Boot工程启动的时候出现的横幅:
在这里插入图片描述它可以自定义:在resources下定义一个文件banner.txt,启动时就会按照你指定的文件来显示,否则就按自定义的来。定制字体网站http://patorjk.com/software/taag/
在这里插入图片描述
如果不想使用这个横幅也可以关掉,在启动类中这样配置:

@SpringBootApplication
public class Demo02Application {

    public static void main(String[] args) {
        SpringApplication build = new SpringApplicationBuilder(Demo02Application.class).build();
        build.setBannerMode(Banner.Mode.OFF);
        build.run(args);
       // SpringApplication.run(Demo02Application.class, args);
    }

}

这样再次启动工程就没有banner了。

7、web容器配置
当Spring Boot工程启动的时候,默认的端口是8080,用的tomcat不是本地的tomcat,而是内嵌在Spring Boot里面的tomcat。那么对于在这个tomcat的配置,我们该如何去修改呢?(本地的tomcat可以在tomcat目录下server.xml文件下修改)

在application.properties文件中修改

#修改tomcat的端口号
server.port=8088
#解决乱码问题:http://www.javaboy.org/2019-04-09/javaweb-encoding.html
#post乱码,post参数如果放在请求体里面(也可以放在地址栏),request.setCharacterEncoding。在web.xml文件中配置的过滤器,解决的也是请求体的乱码问题,以及响应的乱码问题
#get请求的乱码,get参数放在url地址里面,所以要修改地址栏的url编码,也就是以前在tomcat文件中的server.xml中配置的URLEncoding
server.tomcat.uri-encoding=UTF-8
#工程名,路径前缀
server.servlet.context-path=/aaa

配置了server.servlet.context-path=/aaa后,项目启动访问就要在路径前面加上/aaa
在这里插入图片描述Spring Boot内嵌Tomcat,那如果我不想用Tomcat,想换一个其他的容器,又该如何配置呢?
把tomcat从依赖中排除掉,再加入需要的依赖

  <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!-- 排除tomcat-->
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        
 <!-- 加入jetty依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jetty</artifactId>
        </dependency>

现在点击启动,就是以jetty来启动的了,配置文件中的
server.port=8088和server.servlet.context-path=/aaa在jetty中也同样适用。但是server.tomcat.uri-encoding=UTF-8是没有用的。jetty有自己的配置,可以重新配置。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值