今天开始学习spring boot,这个框架整合spring和springmvc,简化了很多的配置,这是目前的理解。
搭建流程:
1.从idea搭建,利用maven创建项目,前提是联网,需要下载maven依赖
2.创建成功以后,看项目的结构
上面的springbootwebapplication是创建项目的时候自带的,里面包含main方法,是程序执行的入口,SpringApplication.run启动了springboot程序,启动spring容器,启动内嵌的tomcat。
因为创建的是一个web项目,自己添加了一下controller,添加requestmapping,前台直接调用。
**
程序解析
**
1.springboot的父级依赖spring-boot-starter-parent配置之后,当前的项目就是springboot项目。
2.当引入spring-boot-starter-parent之后,直接提供了相关的maven默认依赖,使用它之后,常用的jar包依赖可以省去version配置。
3.springboot提供了哪些默认jar的依赖,可以查看该父级依赖的pom文件
4.如果不想使用某个默认的依赖版本,可以通过pom.xml文件的属性配置来覆盖版本信息
5.@SpringBootApplication这个注解是springboot项目的核心注解,主要作用是开启spring自动配置,
6.@Controller和@ResponseBody依然是之前的springmvc,springboot使用的还是ssm的东西。
配置文件(application.properties)的简单介绍:
1.server.port=8080:设置请求的端口号
2.server.servlet.context-path=/springboot-web:指定请求的上下文路径
这是springboot2.0往上的用法,之前的是server.context-path
3.application.properties的作用和application.yml的作用相同,如果同时存在,起作用的是application.properties
4.当多环境配置文件的时候,需要在application.properties中指定激活的配置文件
spring.profiles.active=dev
5.当在总的配置文件中激活另外的配置文件时,起作用的时被激活的配置文件
6.当总配置文件中配置,但是被激活配置文件中没配置的,总配置文件中的配置会生效
读取配置文件中的属性的两种方式
1.在配置文件中设置属性的值,然后加value注解,直接取值
boot.name=王雷凯
boot.age=22
@Controller
public class ConfigInfoController {
@Value("${boot.name}")
private String name;
@Value("${boot.age}")
private int age;
@RequestMapping("/boot/config")
public @ResponseBody String hello(){
System.out.println(name+" --- "+age);
return name+"---"+age;
}
}
如果出现乱码,在配置文件中添加:
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
2.再另外写一个类,将整个文件映射为一个对象:
@Component
@ConfigurationProperties(prefix = "boot")//前缀
public class ConfigInfo {
private String name;
private int age;
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;
}
}
取值的时候直接在controller中自动注入这个类,然后get属性
@Autowired
ConfigInfo configInfo;
@RequestMapping("/boot/config")
public @ResponseBody String hello(){
return this.name +"---"+ this.age + configInfo.getName() + configInfo.getAge();
}