SpringBoot (1)

目录

1 入门案例

1.1 环境准备

1.2 编写pom.xml

1.3 编写入口程序

1.4 编写接口

1.5 编写配置

1.6 快速部署

1.6.1 打jar包

1.6.2 部署

1.7 访问接口

2 全注解开发

2.1 常用注解

2.2 属性绑定注解

2.2.1 注册组件

2.2.2 @ConfigurationProperties(prefix="teacher")

2.2.3 @EnableConfigurationProperties

3 整合项目流程

3.1 导依赖

3.2 找redis的自动配置类

3.3 找redis的配置属性类


SpringBoot的底层原理仍然是Spring,使用SpringBoot框架带来如下优势

        (1) 快速开发

                能快速创建一个生产级别的Spring应用

        (2) 简化整合

                SpringBoot提供了可选的场景启动器(starter),整合项目只需要引入对应的场景启动器(例: web-starter、mybatis-starter等)即可

        (3) 简化配置

                遵循"约定大于配置"的规则,只要引入了对应的"场景启动器(starter)",则该启动器的所有配置都按默认配置(但也可以自定义配置,只需要修改配置文件即可)

                集中化管理配置:所有配置都写在同一个文件中

        (4) 简化部署

                SpringBoot直接嵌入了Tomcat、Jetty、Undertow,因此不需要再将项目打war包后放在Tomcat中部署,只需要将项目打jar包后放在java环境中用java -jar命令即可

        (5) 简化监控

                SpringBoot自带一些指标监控、健康检查(k8s检查应用是否存活)

        (6) 简化运维

                SpringBoot可以采用外部化配置(将配置文件放在jar包外面),可以直接在外部修改配置文件后重启jar包(java -jar命令)即可,规避了war包方式需要重新打war包重新部署的弊端

1 入门案例

1.1 环境准备

        (1) SpringBoot 3+

        (2) JAVA 17+

        (3) maven 3.6+

        (4) Tomcat 10+

1.2 编写pom.xml

        继承SpringBoot的starter

        添加web的starter依赖

<!--所有SpringBoot项目都必须继承自spring-boot-starter-parent-->
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.1.4</version>
</parent><!--依赖不用写版本号,因为版本号已经在此项目的父项目spring-boot-starter-parent的父项目spring-boot-dependencies中用"<dependencyManagement>依赖管理"定义好了-->
<!--也可以利用maven的"就近原则",使用自定义的依赖版本-->
<dependencies><!--web开发的场景启动器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--redis场景启动器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>
</dependencies><build><plugins><!--SpringBoot打包插件,让应用支持直接jar包部署--><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>

1.3 编写入口程序

        入口程序只有一个,只有这个类的所在的包及其子包才会被Spring扫描到,即默认的@ComponentScan

        也可以用@SpringBootApplication(scanBasePackages = "xyz.aboluo")@ComponentScan("xyz.aboluo")来明确要扫描的包

/*** 启动SpringBoot项目的主入口程序*/
@SpringBootApplication(scanBasePackages = "xyz.aboluo")  //标记这是一个SpringBoot应用
public class MainApplication {public static void main(String[] args) {ConfigurableApplicationContext iocContext = SpringApplication.run(MainApplication.class, args);}
}

1.4 编写接口

@RestController
public class HelloController {@GetMapping("/hello")public String hello() {return "{'code':200,'msg':'hello,world!'}";}
}

1.5 编写配置

        在application.properties配置文件中自定义相关配置

        配置文件的所有配置项是和某个类的对象的属性一一绑定的,这种类叫做配置属性类

                例:ServerProperties.class类绑定了Tomcat服务器有关的配置(比如server.port)

                     MultipartProperties.class类绑定了文件上传相关的配置

#自定义端口
server.port=8083
#项目地址
server.servlet.context-path=/sb#最大文件大小
spring.servlet.multipart.max-file-size=20MB

1.6 快速部署

1.6.1 打jar包

1.6.2 部署

        在jar包所在目录,用cmd进入Window控制器,直接用java -jar jar包命令执行jar包

1.7 访问接口

2 全注解开发

SpringBoot摒弃了xml的配置方式,改为全注解驱动

2.1 常用注解

        @Configuration、@SpringBootConfiguration(与@Configuration功能一样)、@Bean、@Scope、@Component、@Controller、@Service、@Repository、@Import

        上述注解介绍可以看这篇文章

2.2 属性绑定注解

        将Spring容器中已经注册组件(Bean)的属性值配置文件的配置项的值进行绑定

2.2.1 注册组件

        可以用@Component等注解注册,也可以在Spring配置类中用@Bean注解注册

2.2.2 @ConfigurationProperties(prefix="teacher")

        将配置文件中所有teacher前缀的配置项的值有此注解的组件的属性进行绑定(需要2者同名才可以绑定)

        注解可以用在Bean类上,也可以用在Spring配置类@Bean方法

                此时通过@Component注册的组件生效,通过@Bean注册的组件也生效

2.2.3 @EnableConfigurationProperties

        用在Spirng配置类(@Configuration或@SpringBootConfiguration)上的注解,并且还是需要配合@CdonfigurationProperties一起使用

                作用1: 将对应的类注册进SpirngIOC容器(无需再写@Component或@Bean)

                作用2: 并且用配置文件中的特定前缀的配置项的值有此注解的组件的属性进行绑定

        使用原因:因为SpringBoot只扫描自己主程序所在的包,就算引入的第三方包中的类用了@ConfigurationProperties注解也无法进行属性绑定,因此此注解主要是针对导入的第三方包而存在的

@SpringBootConfiguration
@EnableConfigurationProperties({Dog.class, Cat.class})
public class SpringConfig {
}#application.properties配置文件
dog.name=旺财
dog.age=3
dog.like=骨头cat.name=小猫咪
cat.age=2
cat.like=猫粮@ConfigurationProperties(prefix = "dog")
public class Dog {private String name;private Integer age;private String like;
}@ConfigurationProperties(prefix = "cat")
public class Cat {private String name;private Integer age;private String like;
}@SpringBootApplication(scanBasePackages = "org.example")
public class MainApplication {public static void main(String[] args) {ConfigurableApplicationContext iocContext = SpringApplication.run(MainApplication.class, args);Dog dog = iocContext.getBean(Dog.class);Cat cat = iocContext.getBean(Cat.class);System.out.println(dog); //Dog{name='旺财', age=3, like='骨头'}System.out.println(cat); //Dog{name='小猫咪', age=2, like='猫粮'}}
}

3 整合项目流程

以整合redis为例

3.1 导依赖

3.2 找redis的自动配置类

        根据规则,某个项目的自动配置类一般是xxxxxAutoConfiguration,因此redis的配置类就是RedisAutoConfiguration

3.3 找redis的配置属性类

        根据规则,某个项目的配置属性类一般是xxxxxProperties

        从redis的自动配置类的@EnableConfigurationProperties注解可知它的配置属性类是RedisProperties

        从配置属性类的@ConfigurationProperties注解可知在自己项目的配置文件中要写的前缀是"spring.data.redis"

        从这个配置属性类中得到默认配置: 默认主机地址是"localhost",默认端口号是"6379"

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQLAlchemy 使用封装实例

类封装 database.py #! /usr/bin/env python # -*- coding: utf-8 -*-import sys import json import logging from datetime import datetimefrom core.utils import classlock, parse_bool from core.config import (MYSQL_HOST,MYSQL_PORT,MYSQL_USER,MYSQL_PASS,MYSQL_DA…

黑马JVM总结(三十二)

&#xff08;1&#xff09;类加载器-线程上下文1 使用的应用程序类加载器来完成类的加载&#xff0c;不是用的启动类加载器&#xff0c;jdk在某些情况下要打破&#xff0c;双亲委派的模式&#xff0c;有时候需要调用应用程序类加载器来完成类的加载&#xff0c;否则有些类它是找…

从读不完一篇文章,到啃下20万字巨著,大模型公司卷起“长文本”

点击关注 文丨郝 鑫 编丨刘雨琦 4000到40万token&#xff0c;大模型正在以“肉眼可见”的速度越变越“长”。 长文本能力似乎成为象征着大模型厂商出手的又一新“标配”。 国外&#xff0c;OpenAI经过三次升级&#xff0c;GPT-3.5上下文输入长度从4千增长至1.6万token&…

黑马JVM总结(三十一)

&#xff08;1&#xff09;类加载器-概述 启动类加载器-扩展类类加载器-应用程序类加载器 双亲委派模式&#xff1a; 类加载器&#xff0c;加载类的顺序是先依次请问父级有没有加载&#xff0c;没有加载自己才加载&#xff0c;扩展类加载器在getParent的时候为null 以为Boots…

STM32 CubeMX PWM三种模式(互补,死区互补,普通)(HAL库)

STM32 CubeMX PWM两种模式&#xff08;HAL库&#xff09; STM32 CubeMX STM32 CubeMX PWM两种模式&#xff08;HAL库&#xff09;一、互补对称输出STM32 CubeMX设置代码部分 二、带死区互补模式STM32 CubeMX设置代码 三、普通模式STM32 CubeMX设置代码部分 总结 一、互补对称输…

运维大数据平台的建设与实践探索

随着企业数字化转型的推进&#xff0c;运维管理面临着前所未有的挑战和机遇。为应对日益复杂且严峻的挑战&#xff0c;数字免疫系统和智能运维等概念应运而生。数字免疫系统和智能运维作为新兴技术&#xff0c;正引领着运维管理的新趋势。数字免疫系统和智能运维都借助大数据运…

基本微信小程序的购物商城系统

项目介绍 随着互联网的趋势的到来&#xff0c;各行各业都在考虑利用互联网将自己的信息推广出去&#xff0c;最好方式就是建立自己的平台信息&#xff0c;并对其进行管理&#xff0c;随着现在智能手机的普及&#xff0c;人们对于智能手机里面的应用购物平台小程序也在不断的使…

vscode 资源管理器移动到右边

目录 vscode 资源管理器移动到右边 vscode 资源管理器移动到右边 点击 文件》首选项》设置》工作台》外观》 找到这个配置下拉选择左右

神秘的锦衣卫

在看明朝电视剧经常听到的一句台词&#xff1a;锦衣卫办案&#xff0c;闲杂人等速速离开。锦衣卫是明朝特务机构&#xff0c;直接听命于皇帝&#xff0c;是亲军卫之一&#xff0c;也是最重要的一卫。 1、卫所制 卫所制是明代最主要的军事制度&#xff0c;其目标是寓兵于农、屯…

Java数据结构第十七章、手撕位图

给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&#xff0c;如何快速判断一个数是否在这40亿个数中。【腾讯】 1. 遍历&#xff0c;时间复杂度O(N) 2. 排序(O(NlogN))&#xff0c;利用二分查找: logN 3. 位图解决 数据是否在给定的整形数据中&#xff0c;结…

C++学习——“面向对象编程”的涵义

以下内容源于C语言中文网的学习与整理&#xff0c;非原创&#xff0c;如有侵权请告知删除。 类是一个通用的概念&#xff0c;C、Java、C#、PHP 等很多编程语言中都支持类&#xff0c;都可以通过类创建对象。我们可以将类看做是结构体的升级版&#xff0c;C语言的晚辈们看到了C…

《理解深度学习》2023最新版本+习题答案册pdf

刚入门深度学习或者觉得学起来很困难的同学看过来了&#xff0c;今天分享的这本深度学习教科书绝对适合你。 就是这本已在外网获13.1万次下载的宝藏教科书《理解深度学习》。本书由巴斯大学计算机科学教授Simon J.D. Prince撰写&#xff0c;全书共541页&#xff0c;目前共有21…