欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

SpringBoot学习笔记22-2-1

时间:2023-07-30
SpringBoot概述

提供了快速开发Spring的方法,秉持“约定大于配置”的思想。

Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can “just run”.

Spring Boot让你可以轻易的构建一个可以“直接运行”的独立的生产级的Spring项目


功能

自动配置:运行时自动配置起步依赖:依赖打包,简化依赖辅助功能:嵌入式服务器,指标,安全…

SpringBoot不是增强Spring功能,而是对Spring的优化整合


快速入门

SpringBoot是jar打包方式SpringBoot的业务代码编写方式和Spring一致SpingBoot需要一个引导人口,通过他的main方法启动项目,不用配置tomcat


编写pom.xml

<?xml version="1.0" encoding="UTF-8"?> 4.0.0 org.springframework.boot spring-boot-starter-parent 2.6.3 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-maven-plugin 01HelloSpringBoot 8 8


Controller编写

完全等同Spring

@Controllerpublic class HelloController { @ResponseBody @RequestMapping("hello") public String hello(){ return "hello"; }}


Application——程序入口

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


IDEA自动

没啥好说的,idea创建springboot项目


起步依赖

在spring-boot-starter-parent中定了各种技术的版本信息,组合了-套最优搭配的技术版本。在各种starter中,义了完成该功能需要的坐标合集,中大部分版本信息来自于父工程。我们的工程继承parent,引入starter后,通过依赖传递,就可以简单方便获得需要的jar包,并不会在版本冲突等问题。


SpringBoot配置 配置分类

基于约定,所以有很多默认值。

如果需要自定义,要使用application.properties或者application.yml/yaml文件配置

properties 键值对配置

server.port=8080

yml 缩进是级别关系,冒号后要有空格

server:port: 8080

先加载yaml,之后加载yml,最后加载properties

后加载的会覆盖

也就是优先级方面是properties>yml>yaml


yaml文件格式

是一个标记性语言,比xml简洁(典中典之什么格式都比xml好)

基本语法:

大小写敏感数据前必须有空格缩进表示层级不可以用tab(idea可以转换)!空格个数没关系,只要对齐即可#注释一行—三个横杠分割区域,spring: profiles: xxx标注分区不要使用&转义字符代替&


数据格式

对象:键值对

person:name: zhangsan#行内写法,不常见persion: {name: zhangsan}

数组:

address:- beijing- shanghaiaddress: [beijing,shanghai]

纯量:不可再分的单个值

msg1: 'hello n world' #单引号忽略转义msg2: "hello n world" #双引号识别转义


参数引用

name: zhangsanperson: name: ${name}


如何读取 Value注解

@Vaule(${name})可以获取配置中name的值

@Vaule(${person.name})可以获取配置中person变量成员name的值

@Vaule(${address[0]})可以获取配置中address数组的第一个值


enviroment类

作为成员,使用自动装配注解

enviroment.getProperty("xxx.xxx[x]")


ConfigurationProperties注解

成员名一致,有getter,setter方法的类可以使用@ConfigurationProperties(prefix="xxx")注解自动注解

需要加一个依赖,idea会提示

org.springframework.boot spring-boot-configuration-processor true

个人理解:可以通过这个注解使得某个组件从配置文件中寻找。因此这个注解要在需要被装配的组件上标注。prefix用于标识是配置文件中的哪个对象

需要从配置中获取的类Person

@Data@AllArgsConstructor@NoArgsConstructor@Component@ConfigurationProperties(prefix = "pp.person")public class Person { public String name; public int age; public List ints; @Override public String toString() { return "person{" + "name='" + name + ''' + ", age=" + age + ", ints=" + ints + '}'; }}

application.yaml

pp: person: name: test1 age: 18 ints: - 12 - 22 - 32 - 42person: name: test2 age: 18 ints: - 12 - 22 - 32 - 42

测试类

@RestControllerpublic class hello { @Autowired public Person person; @RequestMapping("/hello2") public String hello(){ System.out.println(person.toString()); return "hello222"; }}

输出结果

person{name='test1', age=18, ints=[12, 22, 32, 42]}


profile

实际开发中,我们会有开发,测试,生产不同的环境。

我们所依赖的数据库地址,服务器端口等等配置都有所不同,我们急需一个方便动态切换的配置功能。


application-dev.properties 开发环境application-test.properties 测试环境application-pro.properties 生产环境

需要进行激活操作

激活:

在application.properties中加入spring.profiles.active=dev

yaml也是可以的,方式类似,同时还可以配合使用—分段

可以在配置文件、虚拟机参数、命令行参数等多种方式激活


内部配置加载

Springboot程序启动时,会从以下位置加载配置文件:

file./config/: 当前项目下的/config目录下(在idea未打包前是resources下)file:./ :当前项目的根目录classpath:/config/: classpath的/config目录(最上级父工程目录 v)classpath:/ : classpath的根目录

加载顺序为上文的排列顺序,高优先级配置的属性会生效


外部配置加载

可以使用--spring.config.location=d://asdasda/asdasdas/asdasd命令行参数来指定一个外部配置文件

和jar包平级的application.properties以及同级的config目录下的application.properies也会被识别,可以进行一个互补的操作


常用配置

# 修改端口server.port=8080# 修改项目路径server.servlet.content-path=/hello


整合框架 Junit整合

创建工程

引用起步依赖

编写测试类

填写测试注解

@RunWith@SpringBootTest

编写测试方法

现在新版的似乎不用加runwith,假如是同级的,只需要在测试类上加@SpringBootTest,方法上使用junit的@Test注解即可。


整合Redis

待续


整合MyBatis

搭建SpringBoot工程引入mybatis起步依赖,添加mysq|驱动编写DataSource和MyBatis相关配置定义表和实体类编写dao和mapper文件/纯注解开发测试

application.yaml

# datasourcespring: datasource: url: jdbc:mysql://bj-cynosdbmysql-grp-2ny5n7eg.sql.tencentcdb.com:21436/MyBatisLearing?useSSL=true&useUnicode=true&characterEncoding=UTF-8 username: password: driver-class-name: com.mysql.jdbc.Driver# mybatismybatis: mapper-locations: classpath:mapper/*Mapper.xml #mapper目录 type-aliases-package: com.sunspot._03mybatis.pojo #别名扫描 # config-location: mybatis的核心配置文件,这里暂时没用 QAQ

之后正常写就可以了捏

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。