SpringBoot程序解析
1.pom.xml文件解析
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
1.1)Spring Boot的父级依赖 Spring-Boot-starter-parent 配置之后当前的项目就是SpringBoot项目
1.2)Spring-Boot-starter-parent 是一个特殊的starter依赖,它用来提供相关的Maven,默认依赖,
使用它之后,常用的jar包依赖都可以省去 version 配置;
可通过查看父类依赖的pom文件,查看默认依赖的jar包;
如果不想使用某个默认的依赖版本,可以通过pom.xml 文件的属性配置覆盖某个依赖项,
例如:覆盖Spring版本
<properties>
<spring.version>5.0.0.RELEASE</spring.version>
</properties>
2.application.java 启动类文件解析
//该注解是SpringBoot项目的核心注解,主要作用是开启Spring自动配置;
@SpringBootApplication
public class Springboot77Application {
//main方法是一个标准的java 程序的main方法,主要作用是作为项目启动运行的入口;
public static void main(String[] args) {
//启动了springboot 程序,启动Spring 容器,启动内嵌的tomcat;
SpringApplication.run(Springboot77Application.class, args);
}
}
2.1 )@SpringBootApplication注解:该注解是SpringBoot项目的核心注解,主要作用是开启Spring自动配置;
2.2)main方法是一个标准的java 程序main方法,主要作用是作为项目启动运行的入口;
3.核心配置文件
3.1)SpringBoot的核心配置文件用于配置SpringBoot程序,有两种格式的配置文件;(properties,yml)
3.2)properties文件:键值对的properties属性文件配置方式
3.3)yml文件,后缀也可以使用yaml后缀
3.4)yaml配置文件,主要采用一定的空格,换行等格式排版进行配置,值与前面的冒号配置项必须要有一个空格;
3.5)yaml是一种直观的能够被计算机识别的数据序列化格式,容易被人阅读,yaml类似于xml,但是语法比xml简洁
3.6)properties配置文件示例
#tomcat 端口
server.port=8080
#项目上下文
server.servlet.context-path=/lib
3.7)yml配置文件示例
server:
port: 9090
context-path: /lib
3.8)SpringBoot自定义配置文件读取
我们在SpringBoot的核心配置文件中自定义配置,有两种方法可以去读取配置文件中的属性值
properties 文件中的自定义配置
#自定义配置数据
boot.name=张三
boot.age=22
boot.password=123456
boot.iphone=13615717611
3.9)通过自定义的配置,映射到类中
/**
* @Data lombok的插件,编译后会自动给我们所有属性添加get和set方法,toString,hashCode,equals方法;
* @Component 把普通的pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>
* @ConfigurationProperties 为每个要捕获的外部属性提供一个带有字段的类,
*/
@Data
@Component
@ConfigurationProperties(prefix = "boot")
public class ConfigInfo {
private String name;
private String age;
}
@Controller
public class TestController {
@Autowired
private ConfigInfo configInfo;
@RequestMapping("/test/config2")
public @ResponseBody String configInfo2()
{
return configInfo.toString();
}
}
本地启动,访问接口:localhost:8080/lib/test/config2
3.10)使用@Value注解
@Controller
public class TestController {
@Value("${boot.password}")
private String password;
@Value("${boot.iphone}")
private String iphone;
@RequestMapping("/test/config1")
public @ResponseBody String configInfo1()
{
return "iPhone === " + iphone +"password === "+ password;
}
}
本地启动,访问接口:localhost:8080/lib/test/config1