Springboot快速入门

目录

一、概述

SpringBoot的特性

1、起步依赖

2、自动配置

3、其他特性

二、入门程序

步骤

1、创建Maven工程

2、配置spirng-boot-stater-web起步依赖

3、编写Controller

4、提供启动类

启动

测试 

三、信息配置

四、整合mybatis

1、引入依赖

2、配置信息

3、使用案例


一、概述

传统的spring项目需要使用到这些模块,但随着发展发现这样存在许多弊端,导入依赖繁琐,项目配置繁琐。

这些依赖不仅需要一个一个手动导入,而且还可能发生jar包冲突问题 。

配写xml文件,我们要在applicationcontext.xml核心配置文件中配置大量的bean对象

随着业务越来越复杂,需要配置的bean越来越多,项目就越来越繁琐

因此,springboot应运而生。 


SpringBoot的特性

1、起步依赖

        本质上就是一个Maven坐标,整合了完成一个功能所需的坐标

                          spring的pom依赖                                                         springboot的起步依赖

这些原本都要放在pom文件中的依赖都被整合到了springboot的起步依赖中,其本质是利用了maven传递依赖的特性,

作用就是解决了配置繁琐的问题。

2、自动配置

遵循约定大于配置的原则,在boot程序启动后,一些bean对象会自动注入到ioc容器中,不需要手动生命,简化开发

                  spring配置mybatis                                                                springboot配置之mybatis

传统的mybatis在配置完mybatis的依赖后还需要配置两个bean,SqlSessionFactoryBean和MapperScannerConfigurer。但是使用springboot之后就自动帮你配置好了

3、其他特性

  • 内置的Toncat、Jetty(无需配置WAR文件)
  • 外部化配置
  • 不需要XML配置(使用properties/yml配置)


二、入门程序

需求:使用Springboot开发一个web应用,浏览器发起请求/hello后,给浏览器返回字符串"hello world"

java主要是用来开发web应用,所以我们直接从web开始入门。

传统的spring完成这个需求

使用springboot只需要引入依赖,然后就可以写Controller了,就完成了需求

步骤

1、创建Maven工程

idea中左侧自带Spring Initializr可以直接创建项目,右侧完善信息

2、配置spirng-boot-stater-web起步依赖

创建后目录如下

其中蓝色标注的文件目录可以暂时删掉,这些文件是什么?
        1、.mvn 文件夹:这是 Maven Wrapper 的存放位置,用于在没有全局安装 Maven 的情况下运行 Maven 项目。

        2、.gitignore 文件:用于指定应该被 Git 版本控制系统忽略的文件和目录。

        3、HELP.md 文件:一个 Markdown 格式的文件,通常包含项目的帮助信息、说明和指南。

        4、mvnw 文件:Maven Wrapper 的可执行脚本(Unix/Linux 系统),用于在项目中运行 Maven 命令。

        5、mvnw.cmd 文件:Maven Wrapper 的可执行脚本(Windows 系统),用于在项目中运行 Maven 命令。

详情信息及删除后果看这里icon-default.png?t=N7T8https://blog.csdn.net/T_Y_F_/article/details/131219011

3、编写Controller

注:@RestController = @Controller + @RequestBody

4、提供启动类

这里springboot会自动帮我们创建好这个启动类

至于以上两个类中的各个参数及注解代表什么意思可以看我之前写的spring入门文章,当然不理解也没关系,并不影响使用

目录的最终结构如下

注:启动类一定要和controller类放在同一个包下,否则后续发起请求时会报错

启动

出现tomcot部署在端口XXXX即代表启动成功

注:

假设出现这样的警告,是因为我们默认启动tomcat占用的端口号是8080,但此时他被别的进程占用了,导致了我们写的程序无法启动。

因此我们需要更改端口号, 在springboot默认创建的配置为application.properties,在文件中写

#端口号
server.port=8888

我们也可以改成application.yml(或yaml,都一样)格式文件,这样的话就要写成

#端口号
server:
  port: 8888

注意yml(yaml)格式中,:和值中间有一个空格,不然识别不了

这两种格式的配置文件都可以使用,看个人习惯

不过yml使用了换行加缩进来表示层级关系,更加清晰,推荐使用

测试 

在postman工具中(或者直接在网页上输也行)输入http://localhost:xxxx/hello

xxxx是你的端口号, /hello是你写的url

网页


三、信息配置

在传统的spring开发中,比如我们要使用阿里云服务,就要定义一个配置类。这样就与代码耦合度高了,以后想修改信息就得修改代码

我们更希望在不惊动代码的情况下完成信息配置,所以我们将配置信息写到yml(properties)中

但此时我们虽然编写完了配置信息,但是并没有获取信息,因为配置信息并不是像之前的bean一样。我们需要自己获取

使用@Value(" ${键名}")注解

如获取endpoint就是

@Value("${endpoint}")
public String endpoint;

但是这样还是很麻烦,如果有100个配置信息,那就得写100个@Value

因此,springboot提供了一个注解@Configrutionproperties(prefix="前缀")

这个注解要写在配置类上,这样就能自动获取"前缀"下的配置属性

如上面的例子,不同层级之间用“ . ”连接成一个就行

@ConfigurationProperties(prefix = "ali-yun.oss")

如果想在形参上使用,那么就是直接写在形参前面

@Bean
public Book book(@Value("${book.name}") String name,@Value("${book.price}" Integer price)){
    Book book = new Book();
    book.setName(name);
    book.setSystem(system);
    return book;
}


四、整合mybatis

1、引入依赖

mybatis是对数据库进行操作,因此需要引入两个依赖

        <!-- mybatis的起步依赖 -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot</artifactId>
            <version>3.0.1</version>
        </dependency>

        <!-- mysql的驱动依赖 -->
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
        </dependency>

2、配置信息

spring:
  datasource:
    driverClassName: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/springtest
    username: root
    password: 123456

url中最后一个是自己要使用的数据库,记得更改

mybatis已经在之前的博客中讲过了,这里不再讲述知识点

3、使用案例

随便创建一个数据库

为了方便排除查看bug,我们在添加几个配置

#开启驼峰命名
mybatis:
  configuration:
    mapUnderscoreToCamelCase: true

#打印日志信息
logging:
  level:
    com.wal: debug

驼峰命名就是,我们在数据库中的字段是book_id和book_name,而我们在创建其在java中的对应类的属性字段时并不想创建成book_id和book_name。java的开发规范应该是驼峰命名,即bookId和bookName。如果我们直接写成驼峰命名的话,数据库字段与实体类字段不一致,mybatis就无法识别。所以要在配置文件中开启驼峰命名转换,这样就可以在不一致的情况下使用了。

Mapper

public interface BookMapper {
    
    @Select("select * from t_book where book_id = ${id}")
    public Book findById(Integer id);
    
}

Service

@Service
public class BookServiceImpl implements BookService {

    @Autowired
    private BookMapper bookMapper;


    @Override
    public Book findById(Integer id) {
        return bookMapper.findById(id);
    }
}

Controller

@RestController
public class BookController {

    @Autowired
    private BookService bookService;

    @RequestMapping("/findById")
    public Book findById(Integer id){
        return bookService.findById(id);
    }
}

启动测试

由于我们在配置信息中配置了日志,所以会在控制台上打印出来日志

这个使springboot自带日志,如果觉得并不够详细,可以引入Lombok依赖日志、log4j2依赖日志,后面再讲。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/137567.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

php的api接口token简单实现

<?php // 生成 Token function generateToken() {$token bin2hex(random_bytes(16)); // 使用随机字节生成 tokenreturn $token; } // 存储 Token&#xff08;这里使用一个全局变量来模拟存储&#xff09; $tokens []; // 验证 Token function validateToken($token) {gl…

【数据结构】树与二叉树(十三):递归复制二叉树(算法CopyTree)

文章目录 5.2.1 二叉树二叉树性质引理5.1&#xff1a;二叉树中层数为i的结点至多有 2 i 2^i 2i个&#xff0c;其中 i ≥ 0 i \geq 0 i≥0。引理5.2&#xff1a;高度为k的二叉树中至多有 2 k 1 − 1 2^{k1}-1 2k1−1个结点&#xff0c;其中 k ≥ 0 k \geq 0 k≥0。引理5.3&…

pta 高空坠球 Python3

皮球从某给定高度自由落下&#xff0c;触地后反弹到原高度的一半&#xff0c;再落下&#xff0c;再反弹&#xff0c;……&#xff0c;如此反复。问皮球在第n次落地时&#xff0c;在空中一共经过多少距离&#xff1f;第n次反弹的高度是多少&#xff1f; 输入格式: 输入在一行中…

pyTorch Hub 系列#4:PGAN — GAN 模型

一、主题描述 2014 年生成对抗网络的诞生及其对任意数据分布进行有效建模的能力席卷了计算机视觉界。两人范例的简单性和推理时令人惊讶的快速样本生成是使 GAN 成为现实世界中实际应用的理想选择的两个主要因素。 然而&#xff0c;在它们出现后的很长一段时间内&#xff0c;GA…

11.12总结

这一周主要写了个人中心的几个功能&#xff0c;资料修改&#xff0c;收货地址的创建和修改删除&#xff0c;还有主页界面和商品界面

Scikit-LLM:一款大模型与 scikit-learn 完美结合的工具!

Scikit-LLM 是文本分析领域的一项重大变革&#xff0c;它将像 ChatGPT 这样强大的语言模型与 scikit-learn 相结合&#xff0c;提供了一套无与伦比的工具包&#xff0c;用于理解和分析文本。 有了 scikit-LLM&#xff0c;你可以发现各种类型的文本数据中的隐藏模式、情感和上下…

生成式AI - Knowledge Graph Prompting:一种基于大模型的多文档问答方法

大型语言模型&#xff08;LLM&#xff09;已经彻底改变了自然语言处理&#xff08;NLP&#xff09;任务。它们改变了我们与文本数据交互和处理的方式。这些强大的AI模型&#xff0c;如OpenAI的GPT-4&#xff0c;改变了理解、生成人类类似文本的方式&#xff0c;导致各种行业出现…

Spring-ProxyFactory

ProxyFactory选择cglib或jdk动态代理原理 ProxyFactory在生成代理对象之前需要决定是使用JDK动态代理还是CGLIB技术&#xff1a; public class DefaultAopProxyFactory implements AopProxyFactory, Serializable {Overridepublic AopProxy createAopProxy(AdvisedSupport co…

cocosCreator 之 Bundle使用

版本&#xff1a; v3.4.0 语言&#xff1a; TypeScript 环境&#xff1a; Mac Bundle简介 全名 Asset Bundle(简称AB包)&#xff0c;自cocosCreator v2.4开始支持&#xff0c;用于作为资源模块化工具。 允许开发者根据项目需求将贴图、脚本、场景等资源划分在 Bundle 中&am…

从0到0.01入门React | 010.精选 React 面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

实验一 Anaconda安装和使用(Python程序设计实验报告)

实验一 Anaconda安装和使用 一、实验环境 Python集成开发环境IDLE/Anaconda 二、实验目的 1&#xff0e;掌握Windows下Anaconda的安装和配置。 2. 掌握Windows下Anaconda的简单使用&#xff0c;包括IDLE、Jupyter Notebook、Spyder工具的使用。 3. 掌握使用pip管理Python扩展库…

分类预测 | Matlab实现PSO-BiLSTM粒子群算法优化双向长短期记忆神经网络的数据多输入分类预测

分类预测 | Matlab实现PSO-BiLSTM粒子群算法优化双向长短期记忆神经网络的数据多输入分类预测 目录 分类预测 | Matlab实现PSO-BiLSTM粒子群算法优化双向长短期记忆神经网络的数据多输入分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现PSO-BiLSTM粒子…

优酷网页截图黑屏及了解浏览器图形服务API-meethigher

一、背景 周六跟同事逛了上海的豫园、城隍庙、静安寺、静安公园。豫园门票40&#xff0c;相传是明代私人园林&#xff0c;园主人为当年的四川布政使&#xff0c;是江南风格古典园林&#xff0c;风景还不错。 周日天气降温&#xff0c;直接睡了一天&#xff0c;想起同事推荐的《…

Java --- JVM的执行引擎

目录 一、执行引擎概述 1.1、执行引擎的工作过程 二、Java代码编译和执行的过程 三、解释器 3.1、解释器工作机制 3.2、解释器分类 3.3、解释器现状 四、JIT编译器 五、热点代码及探测方式 六、方法调用计数器 6.1、热点衰减 七、回边计数器 八、HotSpot VM设置程序…

用python随机生成座位表

1 问题 学习中总会遇到大大小小的考试&#xff0c;考试场地和考试座位的确立是考试准备工作的重要一环&#xff0c;那么能否用python随机生成座位表呢。 2 方法 定义座位表的行列数&#xff0c;例如10行10列创建一个二维数组&#xff0c;用于存储座位信息&#xff0c;例如使用0…

【KVM】硬件虚拟化技术(详)

前言 大家好&#xff0c;我是秋意零。 经过前面章节的介绍&#xff0c;已经知道KVM虚拟化必须依赖于硬件辅助的虚拟化技术&#xff0c;本节就来介绍一下硬件虚拟化技术。 &#x1f47f; 简介 &#x1f3e0; 个人主页&#xff1a; 秋意零&#x1f525; 账号&#xff1a;全平…

Android Studio真机运行时提示“安装失败”

用中兴手机真机运行没问题&#xff0c;用Vivo运行就提示安装失败。前提&#xff0c;手机已经打开了调试模式。 报错 Android Studio报错提示&#xff1a; Error running app The application could not be installed: INSTALL_FAILED_TEST_ONLY 手机报错提示&#xff1a; 修…

基于SSM框架的高校试题管理系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

Ps:RGB 颜色模式

Ps菜单&#xff1a;图像/模式/RGB 颜色 Image/Mode/RGB Color RGB 颜色模式 RGB Color Mode是数字图像捕捉、处理以及显示的最常用模式&#xff0c;也是 Photoshop 默认的工作模式。 RGB 是 Red&#xff08;红色&#xff09;、Green&#xff08;绿色&#xff09;、Blue&#xf…

触摸屏【威纶通】

威纶通&#xff1a; cMT-FHDX-920编程软件&#xff1a; EBproV6.08.02.500_20230828 新建工程&#xff1a; 文件》新建 常用》系统参数 新增设备服务 编程&#xff1a; 目录树》11》新增常用》元件 按钮 标签&#xff1a; 文本信息