SpringBoot(一)——一个开箱即用的开源框架

本文介绍SpringBoot框架,一种简化Spring应用开发的方式。通过Maven或SpringBoot官网搭建项目,实现快速部署。文章涵盖SpringBoot的基本概念、搭建流程及数据库连接池配置示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SpringBoot

不管你前面有没有学过Spring Framework,从这篇文章开始你将进入另一个Spring家族的成员SpringBoot。

关于SpringBoot

SpringBoot是什么?SpringBoot能干什么?来看看官方文档是怎么说的。
在这里插入图片描述
翻译后再加上我的理解:它是GitHub上的一个开源框架,SpringBoot使创造一个独立的,生产级别的应用变得更加简单。
听起来就很棒吧,有学过spring framework的同学可以立刻感觉进入了一个更简洁的开发,没有学过spring framework的同学也能很快的搭建出spring boot的项目!那接下来就让我们来实践实践吧!

创建SpringBoot的两种方式

用Maven搭建

1.创建一个maven工程名为springboot(前面创建步骤就不说了,毕竟学到springboot了基础的maven搭建大家都会)
在这里插入图片描述
2.在pom中添加父依赖管理(不懂的可以去看看Maven的知识,不过这不影响使用),这样就算是有spring boot的环境了!

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.4.RELEASE</version>
    </parent>

3.添加spring boot的web启动器依赖(现先搭建一个web工程)

 <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    </dependencies>

可以看到,添加后的依赖应有尽有,当然spring的一些jar和一些常用的插件都在里边了(由于空间限制,下边的不能展开),并且内部处理过版本冲突。
在这里插入图片描述
4.在java下创建一个com.wrial.BootDemo的类,编写main函数。

package com.wrial;

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

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

5.启动,会发现大大的logo,并且发现服务器已经运行起来了。
在这里插入图片描述
6.访问locallhost:8080,虽然是404,但是足以说明问题说明我们的MVC项目已经搭建成功了。
在这里插入图片描述
7.分析,从下图的加载日志可以很直观的看到端口号路径等配置信息,并且学过ssm的小伙伴有没有发现这里的好多配置我们以前都用手动的配置,如编码过滤器,servlet核心配置,还有我们以前手动写过的异常拦截器等等。SpringBoot已经在内部帮我们实现了这些繁琐的配置。
在这里插入图片描述
8.看了404不过瘾,是不是心里还有些疑惑,到底行不行啊,别急,接下来就创建一个Controller,我用来测试就写在刚刚那个包下。
知识点:RestController注解等价于Controller+ResponseBody。

package com.wrial;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;

//@RestController
@Controller
public class WebBootDemo {
    @GetMapping("/hello")
    @ResponseBody
    public String hello(){
        return "魏某某男神!";
    }
}

启动项目来共同见证奇迹的来临!
在这里插入图片描述
还有一个很好玩的地方可以判断,这个还自带皮肤的!有点帅。
在这里插入图片描述

用SpringBoot的自动搭建

springboot的自动搭建这个就很方便了
网站 进入

在这里插入图片描述
1.可以在这里创建你的项目(通用配置),右边可以查找你想要的依赖。
2. 如果需要自己挑选进行特定配置,可以点击下方图片红色区域
在这里插入图片描述
然后往下翻会看到很多很多的配置(配置太多只能展示局部)
在这里插入图片描述
在这里插入图片描述
是不是特别快捷而且还能省去不需要的依赖!(仅适合老司机哦,萌新还是用默认的吧)
然后就会生成一个项目用编译器打开就可以用了哈!!!

一些疑问?

在我们以前的ssm项目中的讲解中,有说过当时对于那些不是自己写的类不能用注解配置,但是那只是spring2的事了,现在已经spring5,当然就会有其他方式来代替xml配置文件。因为springboot不可能满足一些人为控制的一些配置。Springboot就在这个基础上加上自己的优化,使配置更优雅(下次讲)。
那下面就展示一个数据库连接池的例子吧:
1.新建一个jdbc.properties文件

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/Mybatis
jdbc.username=root
jdbc.password=wrial.qq.com

2.使用java代码来代替xml配置

package com.wrial;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

import javax.sql.DataSource;

@Configuration
@PropertySource("classpath:jdbc.properties")
public class DBConfig {
    @Value("${jdbc.url}")
    String url;
    @Value("${jdbc.driverClassName}")
    String driverClassName;
    @Value("${jdbc.username}")
    String username;
    @Value("${jdbc.password}")
    String password;

    @Bean
    public DataSource dataSource(){
       DruidDataSource druidDataSource = new DruidDataSource();
       druidDataSource.setDriverClassName(driverClassName);
       druidDataSource.setUrl(url);
       druidDataSource.setUsername(username);
       druidDataSource.setPassword(password);
       return druidDataSource;
    }
}

3.在环境中使用(我们只看效果,不做具体演示了),将datasource属性注入到WebBootDemo中,然后Debug设置断点查看dataSource的注入情况。

package com.wrial;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import javax.sql.DataSource;

@Controller
public class WebBootDemo {
    @Autowired
    private DataSource dataSource;

    @GetMapping("/hello")
    @ResponseBody
    public String hello() {
        return "魏某某男神!";
    }
}

4.访问localhost:8080/hello在这里插入图片描述
可以发现我们的属性已经注入进去了!说明数据源配置成功了!
在这里插入图片描述

### Spring Boot 框架基本概念与使用场景 #### Spring Boot 基本概念 Spring Boot 是基于 Spring Framework 构建的一个开源 Java 开发框架,旨在简化新项目的初始搭建和开发流程[^1]。它通过提供开箱即用的功能集合来减少开发者的工作量,特别适合用于构建现代化的、云原生的应用程序以及微服务架构下的项目。 - **核心理念** Spring Boot 的设计理念围绕着“约定优于配置”,这意味着框架本身已经预设了许多合理的默认设置,从而让开发者无需花费过多时间去调整繁琐的基础配置就能迅速启动应用程序[^1]。 - **主要目标** - 创建独立运行的 Spring 应用程序; - 尽可能自动配置 Spring 和第三方库; - 提供生产就绪功能,例如健康检查、外部化配置等; - 绝对不生成任何代码或额外文件到您的项目中[^1]。 --- #### 使用场景分析 ##### 微服务架构中的角色定位 随着软件工程向更加灵活高效的模式转变,“单体巨石型”应用逐渐被分解成多个小型自治的服务单元——这就是所谓的微服务体系结构。在这种背景下,Spring Boot 凭借其轻量化特性和强大的生态系统成为实现这些细粒度服务的理想工具之。 - **优势体现** - 内嵌 Tomcat, Jetty 或 Undertow 容器,免除单独安装 web server 步骤的同时还支持热加载加快迭代周期。 - Starter POMs 自动引入所需依赖版本号匹配问题得到解决,极大地方便了 Maven/Gradle 工程管理。 - Actuator 插件提供了监控端点暴露接口状态信息给运维团队查看,有助于提升整体系统的可观测性水平。 ##### RESTful API 设计与发布 对于需要对外公开数据交互接口的企业来说,利用 Spring Boot 可以非常便捷地创建出符合 REST 规范的操作方法,并且配合 Swagger 文档自动生成插件能够让整个过程变得更加透明友好。 ```java @RestController @RequestMapping("/api/books") public class BookController { @GetMapping("/{id}") public ResponseEntity<Book> getBookById(@PathVariable(value = "id") Long bookId) { Optional<Book> optionalBook = bookRepository.findById(bookId); if (optionalBook.isPresent()) { return new ResponseEntity<>(optionalBook.get(), HttpStatus.OK); } else { return new ResponseEntity<>(HttpStatus.NOT_FOUND); } } } ``` 上述例子展示了如何定义一个简单的 GET 请求处理器函数用来响应客户端关于书籍详情页面的信息获取需求。 --- #### 总结 综上所述,无论是从降低入门门槛还是促进生产力的角度来看,Spring Boot 都展现出了无可比拟的价值所在。它的出现不仅改变了传统意义上繁杂冗长的 JAVA EE 编程方式,同时也顺应时代潮流推动了敏捷交付实践的发展进程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值