SpringBoot学习笔记 2018-08-09

SpringBoot学习笔记 2018-08-09


SpringBoot的配置文件种类

1.application.properties

例:
server.port=8081

person.age=19
person.lastName=xiaohua
person.names=zhang1, zhang2, zhang3
person.maps.k1=v1
person.maps.k2=v2
person.maps.k3=v3
person.son.name=xiaoxiaozhang
person.son.flag=false   

这里中文会出现乱码的情况, 在idea里面设置file encoding的编码

配置文件中支持随机数

例:
${random.int}
${random.uuid}
${random.value}
${random.long}
${random.int(10)}
${random.int[1023, 2048]}  

多配置文件的情况
1. 多profile

创建的额外的配置文件名称可以为 application-{profile}.properties/yml

  1. 激活指定的 profile文件

在application.properties配置文件中指定

spring.profiles.active=dev; // 激活dev配置文件

2. application.yml

例:
在resources下创建 application.yml文件

server:
  prot: 8081

person:
  lastName: zhangsan
  age: 18

3. 配置文件的加载次序

-file:./config/         //项目的根目录下的config文件夹
-file:./                    // 根目录
-classpath:/config/     // resource 下的config文件夹
-classpath:/            // resource目录

从上到下依次优先,高优先级的配置文件会覆盖掉低优先级的配置文件


SpringBoot中的注解

@CoufigurationProperties

再实体类上声明, 将配置文件中配置好的值, 绑定到响应的实体类中

@CoufigurationProperties(prefix = "person") 
public class Person{
    ...
}

上面的perfix指定的就是配置文件中的属性的名称

@Component

声明类为实体类

@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    ...
}

@Value

为实体类设置初始化的值

@Value("#{1 + 2 + 3}") // 进行代数运算
private int age;

@Value("${person.lastName}") // 注入配置文件中的值
private String lastName;

@Value("123") // 直接注入
private List<String> names;

@Value 和 @CoufigurationProperties 之间的区别

@CoufigurationProperties 支持批量的注入
@Value 一个一个具体的变量的注入

@CoufigurationProperties 支持松散的语法绑定 即配置文件的bean的配置的名称可以由横杠连接…
@Value 不支持松散语法

@CoufigurationProperties 不支持SPEL 即properties配置文件中不能写入 #{}这样的表达式
@Value 支持 SPEL

@CoufigurationProperties 支持JSR303数据校验
@Value 不支持数据校验

@CoufigurationProperties 可以封装复杂类型
@Value 无法封装复杂类型

@Validate

JSR303数据校验

@Component
@ConfigurationProperties(prefix = "person")
@Validated
public class Person {

private int age;

@NotNull(message = "lastName不能为null")
@NotBlank(message = "不能为空")
private String lastName;

@NotEmpty(message = "不能为空")
private List<String> names;

@NotEmpty(message = "不能为空")
private Map<Object, Object> maps;

注意这里的@Validated注解 一定要和 @ConfigurationProperties配合使用

@RestController

@RestController注解相当于@ResponseBody + @Controller合在一起的作用
如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,或者html,配置的视图解析器 InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。
如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。
如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解

@PropertiesSource && @ImportSource

@PropertiesSource 用来加载指定的properties文件并注入到当前类下
例:
@PropertySource(value = {“classpath: apps.properties”})

@ImportSource 用来加载指定的配置文件

例:
@ImportSource(locations = {"classpath: abc.xml"})

@Configuration

例:
@Configuration
public class Configuration01 {
    @Bean
    public Son initSon(){
        Son son = new Son();
        son.setName("小航");
        son.setFlag(false);
        return son;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值