@ResponseBody标注在类上表示这个类的所有方法返回的数据直接写给浏览器(如果是对象转为json数据)
@RestController表示@ResponseBody+@Controller
resources文件夹中的目录结构:
- static:保存所有的静态资源:js css images;
- templates:保存所有的模板页面(springboot默认jar包使用嵌入式的Tomcat,摩恩不支持JSP页面);可以使用模板引擎(freemaker、thymeleaf);
- applaction.properties:配置资源文件
SpringBoot配置
-
配置文件:springboot使用一个全局配置,配置文件名是固定的;
application.properties
application.yml
YAML文件是以数据为中心,比json、xml更适合做配置文件。
YAML语法:
基本语法:k:(空格)v:表示一对键值对(空格必须有);
以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是一个层级的
属性和值也是大小写敏感。值的写法:
1.字面量:普通的值(数字、字符串、布尔)
k:v:字面直接来写;字符串默认不用加上单引号或者双引号;
双引号不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思;
单引号:特殊自读最终就输出一个字符串。
比如name:“zhangsan \n list" -----zhangsan 换行 list
name:‘zhangsan \n list’ ------zhangsan \n list
2.对象、Map(属性和值)(键值对):k:v对象还是k:v的形式friends: lastName: zhangsan age: 20
行内写法:
frinends: {lastName: zhangsan,age: 18}
3.数组(List、Set):
用-值表示数组中的一个元素names: - jennie - channel - jackson
行内写法:
names: [jennie,channel,jackson]
yml文件属性的获取:
@ConfigurationProperties(prefix=“”):告诉Springboot将本类中的所有属性和配置文件中相关的配置进行绑定,只有这个组件是容器中的组件才能使用容器中提供的@ConfigurationPorperties功能;
导入配置文件处理器,配置文件进行绑定就会有提示<!--导入配置文件处理器。配置文件进行绑定就会有提示--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
porperties文件编码:
idea默认使用utf-8编码,porperties默认GBK编码,在setting-》file encodings修改成utf-8
并勾选Transparent native to ASCII
配置文件的作用:修改springboot配置的默认值;
SpringBoot在底层都给我们自动配置好;SpringBoot单元测试:可以在测试期间很方便的类似编码编码一样的进行自动注入等容器的功能。
@Value(“${key}”)从配置文件中获取值;需要一个一个指定,不支持松散绑定;
@Value("#{SpEL}")Spring表达式
@ConfigurationProperties:批量注入配置文件中的属性(指定一个prefix就可以),支持松散语法(比如大小写或者横杠什么的),不支持spring表达式,支持JSR303数据校验;
只是在某个业务逻辑中获取一项配置文件中的某项值,使用@Value
加载指定的配置文件:
@PropertySource(value={“classpath:xx.properties”}):加载指定的配置文件;
@ImportResource:导入Spring的配置文件,让配置文件·的内容生效,加载进来,@ImportRescourse标注在一个配置类上。@ImportResource(locations = {"classpath:beans.xml"})
SpringBoot推荐给容器中添加组件的方式:之前是写配置文件,现在while使用全注解的方式。定义一个配置类,类上使用注解@Configuration,指明当前类是配置类。