1. SpringBoot介绍
1.1 为什么要使用SpringBoot?
1.1.1没有SpringBoot存在的一些问题?
1.1 SSM架构中配置文件太多(eg:spring事务配置文件、spring dao配置文件、spring mvc配置文件等,然后在web.xml文件中加载配置文件)
1.2 jar包的版本不好控制,容易出现jar包冲突,需要自己统一进行管理
1.3 需要额外的servlet容器(tomcat)
以上这些缺点,增加了开发难度,降低了开发速度。
使用SpringBoot可以解决以上问题:
-
不需要配置文件
-
版本由SpringBoot统一管理
-
SpringBoot内部嵌入了tomcat等servlet容器
1.2 什么是SpringBoot?
springboot 就是一个基于spring的一个框架。提供了一些自动配置的依赖包,自动嵌入servlet的容器,简化了我们开发的配置,提升开发人员的开发效率,并解决了包依赖的问题。
1.3 SpringBoot入门
需求:在页面显示Hello World!
1.spring mvc实现此需求:
-
加入依赖
-
配置文件:springmvc.xml:
2.1 组件扫描
2.2 注解驱动
2.3 视图解析器
-
编写controller实现逻辑
-
web.xml加载配置文件
-
tomcat发布一下
2.springboot实现此需求:
-
加入parent工程
-
加入起步依赖
-
创建启动类
-
加入parent工程
<!--添加parent工程-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
</parent>
- 加入起步依赖
<dependencies>
<!--添加起步依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
- 创建启动类
/**
*
*SpringBoot入门
* @author Lyle
* @date 2021/4/19
*/
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class,args);
}
}
- 测试
/**
* 测试
* 访问路径:http://localhost:8080/test/hello
* @author Lyle
* @date 2021/4/19
*/
@RestController
@RequestMapping("/test")
public class TestController {
@RequestMapping("/hello")
public String showHello(){
return "Hello World!";
}
}
1.4 SpringBoot版本控制原理
在上述入门Demo中,我们添加了父工程parent,该版本约束了我们所需要添加的其他依赖的版本,会自动配置与之匹配的jar包版本;所以不需要我们再额外去进行版本的管理。
1.5 SpringBoot配置文件
- application.properties
application.yml或者application.yaml
推荐使用application.yml; - 具体的使用实例:
"#"号表示注释
# 配置端口号,注意port:和8081之间要有空格
server:
port: 8081
#简单的key=value形式
name: zhangsan
#数组形式,使用 - 来区分不同的元素, 元素可以是基本类型,字符串和对象类型
cities:
- beijing
- shenzhen
- changsha
#集合类型,元素是复杂的数据类型,eg:List<Student> students;
students:
- name: zhangsan
age: 18
address: beijing
- name: lisi
age: 20
address: shenzhen
- name: ww
age: 30
address: changsha
# Map集合形式,使用比较少
maps: {"name": "zhangsan","age": "18"}
#参数引用
person:
name: ${name} # 该值可以获取到上边的name定义的值:zhangsan
age: 12
4. 获取配置文件中的值
1. @Value形式获取简单值:
4.1 获取简单的key=value形式
@Value("${name}")
private String name;
4.2 根据索引获取数组中的值
@Value("${cities[1]}")
private String city1;
4.3 获取集合中第一个元素中属性的值
@Value("${students[0].address}")
private String address;
4.4 获取Map中的值
@Value("{maps.name}")
private String mapsname;
4.5 获取person中name的值
@Value("${person.name}")
private String personname;
2. 使用spring中的Environment获取值:
在类中注入Environment对象:
@Autowired
private Environment environment;
使用Environment中的getProperty()方法;
3. @ConfigurationProperties方式获取值:
创建POJO,并使用注解@Component将pojo交给spring来管理;
使用注解@ConfigurationProperties来建立pojo和配置文件的映射;
在类中注入POJO,通过pojo的get方法来获取对应的值。