SpringBoot 入门及两大特性分析

本文介绍了SpringBoot的入门,通过一个简单的应用展示了如何构建、启动和测试。重点分析了SpringBoot的起步依赖和自动配置特性,解释了@SpringBootApplication的作用以及条件化配置的工作原理。此外,还介绍了如何创建可执行jar包进行部署。
摘要由CSDN通过智能技术生成

SpringBoot 入门及两大特性分析

0 前言

Spring从诞生之初,基于最核心的依赖注入(DI)和面向切面编程(AOP),实现了重量级EJB的功能,虽然说Spring是一个轻量级的框架(和EJB相比),但是配置却“重量级”,Spring 从最初版本的XML配置 -> Spring2.5 的基于注解的组件扫描(component-scan) -> Spring3.0 的基于 Java 的配置【1】,目的都是为了减少应用程序内的显示XML配置。

尽管如此,我们仍需要显示配置。例如,我们需要使用SpringMVC的时候,仍需要配置DispatcherServlet。

除此之外,项目的依赖管理也很头疼,我们需要考虑不同版本之间依赖是否会发生冲突的问题。

当使用了Spring Boot之后,这一切都成为了过去。

本文通过简单的入门案例,分析SpringBoot的两大特性:起步依赖和自动配置,以及最后SpringBoot如何创建一个生产环境可用的"胖"jar包。

1 一个简单的Spring Boot 应用

在开始SpringBoot之前,我们简单想想之前是怎么开发一个简单的Web 应用?

需要准备如下:

  • 导入 SpringMVC 和 Servlet API 的依赖
  • 一个 web.xml 文件
  • 一个启用Spring MVC 的Spring 配置
  • 一个 Controller 控制器,处理http请求
  • 一个web容器,如:Tomcat

作为比较,我们下面我们写一个能实现相同功能的Spring Boot应用

PS:

自动化构建SpringBoot项目的方式很多,如使用IDEA的Spring Initializr, https://start.spring.io/, CLI的方式等,大家自行 google,这里我手动进行构建。

1.1 构建Maven项目

构建一个普通的maven项目,这里省略

1.2 起步依赖

pom.xml 文件中,加入父起步依赖和web起步依赖

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <!--此段parent的配置是从spring-boot-starter-parent继承版本号-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
    </parent>

    <groupId>me.fishsx</groupId>
    <artifactId>DemoApplication</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!--导入 web 的起步依赖-->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
</project>

可以看到起步依赖比较之前普通的依赖相比,有2个特点:

  1. artifactId都是以 spring-boot-starter开头
  2. 不需要写version版本号

下面第二节会详细分析起步依赖

1.3 构建启动类

src/main/java下构建包名+启动类名启动类,需要在类上加入**@SpringBootApplication**注解,并且类中写入一个main方法,代码是固定的 SpringApplication.run(DemoApplication.class, args);

package me.fishsx;

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

/**
 * SpringBoot启动类
 */
@SpringBootApplication
public class DemoApplication {
   
    public static void main(String[] args) {
   
        SpringApplication.run(DemoApplication.class, args);
    }
}

PS: 注意启动类的路径位置

启动类的位置必须在其他类/包的 同级或父级目录中,这是因为默认情况下,Spring扫描的注解会根据启动类的位置开始向子目录递归扫描

1.4 构建控制器类

me.fishsx包下,新增controller包并新建UserController类,代码如下:

@RestController
@RequestMapping("/user")
public class UserController {
   
    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    public String hello() {
   
        return "hello springboot!";
    }
}	

1.5 运行启动类测试

启动Spring Boot应用有两种方式

  • 使用IDE工具启动
  • 使用Maven命令:mvn spring-boot:run

使用IDE工具运行启动类,发现日志打印如下

发现Tomcat已启动在8080端口,我们访问 http://localhost:8080/user/hello

输出结果:

同时,我们发现控制台日志也发生了变化,出现了DispatcherServlet的初始化信息

总结:

上面我们简单的写了一个简单的SpringBoot Demo,但是我们并没有配置Tomcat和DispatcherServlet,但是日志中却出现了相关的信息,这就是Spring Boot带来的自动化配置,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值