SpringBoot入门指南(学习笔记)

概述

Springboot是Spring的一个子项目,用于快速构建Spring应用程序

入门

①创建SpringBoot工程

②编写Controller

@RestController
public class HelloContoller {@RequestMapping("/hello")public String hello() {return "hello";}
}

③运行启动类:xxxxApplication

配置文件

用于修改SpringBoot相关配置

Spring提供了多种配置文件格式:只有格式区别

1、application.properties

2、application.yml(更常用)

配置信息的书写和使用:

  • 添加配置
email: user: wmh031024@163.comcode: xxxxxxx
  • 获取配置

① @Value

@Component
public class EmailProperties {@Value("${email.user}")public String user;@Value("${email.code}")    public String code;
}

② @ConfigurationProperties

@Component
@ConfigurationProperties(prefix = "emil")
public class EmailProperties {public String user;public String code;
}

整合mybatis

1、导入maven坐标

<!--MySQL驱动依赖-->
<dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId>
</dependency><!--mybatis起步依赖-->
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.0</version>
</dependency>

2、配置文件

spring:datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/Springusername: rootpassword: root

3、Mapper类

@Mapper
public interface UserMapper {@Select("select * from class1 where id = #{id}")public User findById(Integer id);
}

Bean管理

Bean注册

注册第三方的Bean对象时,没法办用@Component注解声明Bean。

1、创建配置类 ,使用 @Bean注入对象

@Configuration
public class CommonConfig {@Beanpublic User user() {return new User();}
}

2、导入配置类

方式一(单个导入): 使用@Import直接导入

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

**方式二(多个导入):**使用@Import导入 ImportSelector 接口实现类

public class CommonImportSelector implements ImportSelector {@Overridepublic String[] selectImports(AnnotationMetadata importingClassMetadata) {return new String[]{"cn.wmhwiki.config.CommonConfig"};}
}
@SpringBootApplication
@Import(CommonImportSelector.class)
public class BootDemo1Application {public static void main(String[] args) {SpringApplication.run(BootDemo1Application.class, args);}
}

注册条件

Bean注册并相应的值

user:name: yxvalue: 250
@Bean
public User user(@Value("${user.name}") String name, @Value("${user.value}") String value) {return new User(name, value);
}

SpringBoot提供了设置注册生效条件的注解 @Conditional

注解说明
@ConditionalOnProperty配置文件中存在对应的属性,才声明该bean
@ConditionalOnMissingBean当不存在当前类型的bean时,才声明该bean
@ConditionalOnClass当前环境存在指定的这个类时,才声明该bean

自动配置

原理

  1. 在主启动类上添加了SpringBootApplication注解,这个注解组合了EnableAutoConfiguration注解
  2. EnableAutoConfiguration注解又组合了Import注解,导入了AutoConfigurationImportSelector类
  3. 实现selectImports方法,这个方法经过层层调用,最终会读取META-INF 目录下的后缀名为imorts的文件(boot2.7以前的版本,读取的是spring.factories文件)
  4. 读取到全类名了之后,会解析注册条件,也就是@Conditional及其衍生注解,把满足注册条件的Bean对象自动注入到IOC容器中

自定义starter

在实际开发中,经常会定义一些公共组件,提供给各个项目团队使用。而在SpringBoot的项目中,一般会将这些公共组件封装为SpringBoot 的 starter。

  1. 创建 dmybatis-spring-boot-autoconfigure 模块,提供自动配置功能,并自定义配置文件 META-INF/spring/xxx.imports
  2. 创建 dmybatis-spring-boot-starter 模块,在starter中引入自动配置模块

以Mybatis为例,制作Mybatis自动配置

1、创建dmybatis-spring-boot-autoconfig

2、导入maven坐标

照着mybatis-spring-boot-starter导包

3、编写MyBatisAutoConfig配置类

@AutoConfiguration
public class MyBatisAutoConfig {@Beanpublic SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource) {SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();sqlSessionFactoryBean.setDataSource(dataSource);return sqlSessionFactoryBean;}@Beanpublic MapperScannerConfigurer mapperScannerConfigurer(BeanFactory beanFactory) {MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();// 包扫描List<String> packages = AutoConfigurationPackages.get(beanFactory);mapperScannerConfigurer.setBasePackage(packages.get(0));// 注解扫描mapperScannerConfigurer.setAnnotationClass(Mapper.class);return mapperScannerConfigurer;}
}

4、创建imports文件,填入配置类的全类名

META-INF/spring/org.springframework.boot.test.autoconfigure.core.AutoConfigureCache.imports

5、创建dmybatis-spring-boot-starter

image-20231106221613892

6、导入maven坐标

7、导入jdk17插件

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.11.0</version><configuration><source>17</source><target>17</target></configuration></plugin></plugins>
</build>

8、测试使用

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

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

相关文章

FA组件详解

1、了解FA核心组件以及功能 &#xff08;1&#xff09;TC&#xff08;Thin Client&#xff1a;瘦终端&#xff09;&#xff1a;就是类似于机顶盒的一个小盒子&#xff0c;里面有CPU、内存、USB、MIC、HDMI等接口&#xff0c;可以理解为小型电脑&#xff0c;但是它里面是没有操作…

【k8s】deamonset文件和说明

目录 deamonset的相关命令 deamonset的定义 deamonset的使用场景 deamonset的例子 deamonset字段说明 serviceAccountName DaemonSet的结构及其各个部分的作用 deamonset的相关命令 #查看<name-space>空间内有哪些deamonset kubectl get DaemonSet -n <na…

【STM32】STM32学习笔记-PWM驱动LED呼吸灯 舵机 直流电机(16)

00. 目录 文章目录 00. 目录01. 输出比较相关API1.1 TIM_OC1Init1.2 TIM_OCInitTypeDef结构体1.3 TIM_OCMode1.4 TIM_OutputState1.5 TIM_OutputNState1.6 TIM_OCPolarity1.7 TIM_OCNPolarity1.8 TIM_OCPolarity1.9 TIM_OCNPolarity 02. PWM实现呼吸灯接线图03. PWM实现呼吸灯示…

U4_3 语法分析-自底向上分析-LR0/LR1/SLR分析

文章目录 一、LR分析法1、概念2、流程3、LR分析器结构及分析表构造1&#xff09;结构2&#xff09;一些概念 二、LR(0)分析法1、流程2、分析动作1&#xff09;移近2&#xff09;归约(reduce) 3、总结1&#xff09;LR分析器2&#xff09;构造DFA3&#xff09;构造LR(0)的方法(三…

【一分钟】ThinkPHP v6.0 (poc-yaml-thinkphp-v6-file-write)环境复现及poc解析

写在前面 一分钟表示是非常短的文章&#xff0c;只会做简单的描述。旨在用较短的时间获取有用的信息 环境下载 官方环境下载器&#xff1a;https://getcomposer.org/Composer-Setup.exe 下载文档时可以设置代理&#xff0c;不然下载不上&#xff0c;你懂的 下载成功 cmd cd…

【动态规划】【字符串】C++算法:正则表达式匹配

作者推荐 视频算法专题 涉及知识点 动态规划 字符串 LeetCode10:正则表达式匹配 给你一个字符串 s 和一个字符规律 p&#xff0c;请你来实现一个支持 ‘.’ 和 ‘’ 的正则表达式匹配。 ‘.’ 匹配任意单个字符 ’ 匹配零个或多个前面的那一个元素 所谓匹配&#xff0c;是…

大数据应用领域:数据驱动一切

大数据出现的时间只有十几年&#xff0c;被人们广泛接受并应用只有几年的时间&#xff0c;但就是这短短几年的时间&#xff0c;大数据呈现出爆炸式增长的态势。在各个领域&#xff0c;大数据的身影几乎无处不在。今天我们通过一些大数据典型的应用场景分析&#xff0c;一起来看…

C练习——爱因斯坦台阶问题(穷举法)

题目&#xff1a;爱因斯坦曾经提出过这样一道有趣的数学题&#xff1a;有一个长阶梯&#xff0c;若每步上2阶&#xff0c;最后剩下1阶&#xff1b;若每步上3阶&#xff0c;最后剩2阶&#xff1b;若每步上5阶&#xff0c;最后剩下4阶&#xff1b;若每步上6阶&#xff0c;最后剩5…

浅析xxl-obj分布式任务调度平台RCE漏洞

文章目录 前言本地环境搭建1、初始化数据库2、搭建调度中心3、搭建出执行器 XXL-JOB漏洞1、后台弱口令->RCE2、未授权API->RCE3、默认accessToken4、CVE-2022-361575、SSRF漏洞->RCE 总结 前言 在日常开发中&#xff0c;经常会用定时任务执行某些不紧急又非常重要的事…

软件测试/测试开发丨Python 内置库 sys 学习笔记分享

sys 概述 是 Python 自带的内置模块是与 Python 解释器交互的桥梁 sys 使用 常用属性常用方法导入 sys 模块 # 导入sys模块 import sys# 查看sys模块帮助文档 help(sys)# 查看sys模块的属性和方法 print(dir(sys))sys 常用属性 sys.version&#xff1a;返回 Python 解释器…

个人博客主题 vuepress-hope

文章目录 1. 简介2. 配置2.1 个人博客&#xff0c;社媒链接配置 非常推荐vuepress-hope 1. 简介 下面的我的博客文章的截图 通过md写博客并且可以同步到github-page上 2. 配置 2.1 个人博客&#xff0c;社媒链接配置 配置文件 .vuepress/theme.ts blog: {medias: {BiliB…

【漏洞复现】企望制造ERP系统 RCE漏洞

漏洞描述 企望制造ERP系统是畅捷通公司开发的一款领先的生产管理系统&#xff0c;它以集成化管理为核心设计理念&#xff0c;通过模块化机制&#xff0c;帮助企业实现生产、采购、库存等方面的高效管理。该系统存在RCE远程命令执行漏洞&#xff0c;恶意攻击者可利用此漏洞进行…