个人学习记录
spring boot是什么
Spring Boot 是一个用于简化 Spring 应用程序开发的开源框架。它基于 Spring 框架,提供了一种快速、便捷的方式来构建独立的、生产级别的 Spring 应用程序。Spring Boot 通过自动配置和约定优于配置的原则,帮助开发人员轻松地搭建和部署应用,同时减少了大量样板式的配置。
Spring Boot 提供了许多功能和特性,包括:
- 自动配置:Spring Boot 根据项目中的依赖和配置自动配置应用程序。
- 起步依赖:提供预定义的依赖关系,简化项目的依赖管理。
- 嵌入式容器:内置 Tomcat、Jetty 或 Undertow 等容器,无需外部容器即可运行应用程序。
- Actuator:监控和管理应用程序的端点,方便查看应用程序的健康状态。
- 外部化配置:支持在不同环境中使用不同的配置文件,方便部署和管理。
总的来说,Spring Boot 的目标是简化 Spring 应用程序的开发流程,使开发人员能够更专注于业务逻辑的实现而非繁琐的配置。这使得 Spring Boot 成为开发人员首选的框架之一,用于构建各种类型的 Java 应用程序,包括 Web 应用、微服务、批处理应用等。
2024年03月13日19:50:30今日总结
- 创建springboot工程
- 起步依赖的分析
- 启动程序,并访问接口
- springboot 支持yml与properties两种配置文件
- 在代码中读取yml配置的字段
创建springboot工程
file -> new -> project -> 左侧选择maven,右侧jdk版本选择1.8 -> next -> 输入名称
起步依赖的分析
创建好工程后,在pom.xml中,就要添加相关依赖了。
首先要添加的是
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.1</version>
</parent>
<dependencies>
<!-- web 开发的起步依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
贴一下最后的pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>lirui_study</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- spring boot 工程需要继承的父工程-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.1</version>
</parent>
<dependencies>
<!-- web 开发的起步依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
</project>
官方的最新文档在这docs.spring.io/spring-boot…
官方最新的3.x版本,需要jdk17.所以我们选择2.x的。
在这中间有2个插曲,一个是springboot的版本,导致运行失败,是2.0.4.RELEASE这个版本。后面改成了2.4.1.
还有一个,修改项目所依赖的jdk版本。在idea的setting -> build,exection -> compiler -> java compiler -> module里面,后面有对应的jdk版本.
启动程序,并访问接口
创建一个类,添加 @ResetController注解,方法添加@RequestMapping,这个注解中添加访问的path
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello(){
return "hello spring boot $";
}
}
创建一个Application类,并添加main方法,添加注解
@SpringBootApplication
public class HelloApplication {
public static void main(String[] args) {
SpringApplication.run(HelloApplication.class, args);
}
}
此时main方法左侧有运行按钮,点击即可运行。jdk版本8 与springboot版本按照上面的配置,可以运行
在google浏览器输入:
localhost:8080/hello
而8080端口号,可以通过run窗口输出的日志来确定。tomcat那一行
springboot 支持yml与properties两种配置文件
目前只学习了yml文件。贴一下yml文件内容
server:
port: 8091
name: zhangsan
person:
name: hahaha
age: 123
address:
- beijing
- shanghai
person2: {name: zhangsan,age: 123}
#使用 $符号链接变量
person3:
name: ${name}
#数组
address:
- beijing
- shanghai
#数组行内写法。就是在一行里写出来的意思
address2: [beijing,shanghai]
msg1: 'hello \n world' #不会识别转义字符,并且\n也会输出出来
msg2: "hello \n world" #会识别转义字符
在代码中读取yml配置的字段
@RestController
public class HelloController {
@Value("${person.name}")
private String name;
@Value("${address[0]}")
private String address1;
@Value("${msg1}")
private String msg1;
@Autowired
private Environment environment;
@Autowired
private Person person;
@RequestMapping("/hello")
public String hello(){
System.out.println(msg1);
System.out.println(name);
System.out.println(address1);
System.out.println("22222222222222222222222222");
System.out.println(environment.getProperty("person.name"));
System.out.println("22222222222222222222222222");
System.out.println(person);
String[] address = person.getAddress();
for (String s : address) {
System.out.println(s);
}
return "hello spring boot $";
}
}
- 通过value注解,可以读取到单独的变量。规则就是大括号里的变量是yml中的,而代码里的变量都随意。
- 而通过Environment(springframework包下的)方式,添加Autowired注解,在代码里通过environment.getProperty("person.name")来读取
- 创建Person类,类中的变量与yml中的一一对应。
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String name;
private int age;
private String[] address;
public String[] getAddress() {
return address;
}
public void setAddress(String[] address) {
this.address = address;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + ''' +
", age=" + age +
'}';
}
}
需要添加注解,而且第二个注解要注明是yml里的那个实体类。这个实体类的变量与person类要一一对应。比如yml定义的
person:
name: hahaha
age: 123
它没有数组,而person类有,你去读person类的数组,就会空指针