SpringBoot的配置文件

一.SpringBoot配置文件认识

  • SpringBoot中我们可以修改它的一个默认配置,这个直接在配置文件中完成即可。
  • 配置文件有两种,一种是properties文件,一种是yml文件,大家任选一种使用即可
  • 名称名必需是application.properties或者application.yml

application.properties修改端口:

server.port=8888

application.yml修改端口:

server:  port:8881

二.yaml文件的认识与使用

咱们写代码时肯定是要写配置文件,过去我们经常会使用properties,xml或者json来做配置,但是yaml是感觉写配置文件更加适合。

YAML 语言( /ˈjæməl/)的设计目标,就是方便人类读写。它专门用来写配置文件的语言,非常简洁和强大

2.1 YAML的编写规则

  • 大小写敏感
  • 使用缩进表示层级关系
    • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
    • 缩进时不允许使用Tab键,==只允许使用空格=
  • 冒号后面必需有空格

2.2 YAML的写法

YAML中可以写普通值(字符串,Boolean,Date等),对象与集合

2.2.1 普通值

  • 字符串不需要加引号
  • 如果加双引号(""),里面的内容会进行编译,比如说加一个 /n 就会换行
  • 如果加单引号(''),里面的内容会正常显示,比如说加一个 /n 会显示出来
username: zhangage: 34sex: true

2.2.2 对象

  • key-value键值对
employee:  username: zhang  age: 34  sex: true       
  • 行内写法
employee: {username: zhang, age: 34,sex:true}
2.2.3 集合数组
  • 用 - 表示数组中一个元素
hobbys:
  - java  - php  - h5
  • 行内写法
hobbys: {java,php,h5}

2.3 yaml注入值(@ConfigurationProperties方式)

  1. 准备相应的domain
  • Employee
/**
 * @Component:SpringBoot发现这个注解才会读取这个类,并且配置一个bean出来
 * @ConfigurationProperties:SpringBoot发现这个注解,则会和配置中的数据与当前这个组件(bean)的值进行相应的绑定
 *   prefix:配置文件中的前缀名,相应的前缀对应配置中的前缀,数据再进行一一对应
 */@Component@ConfigurationProperties
(prefix=
"emp"
)
public
 
class
 Employee {

    
    private String username;
    
    private String email;
    
    private Integer age;
    
    private Boolean sex;
    
    private Date bornDate;
    
    private List hobbys = new ArrayList();
    
    private Department department;
   
//提供getter,setter与toString
}
  • Department
public class Department {
    
    private Long id;
    
    private String name;
    
//提供getter,setter与toString
}
  1. 完成相应的yml配置
emp:
  
    username: 张三
  
    age: 12
  
    sex: true
  
    born-date: 1999/01/01
  
    email: zhangshan@itsource.cn
  
    department: {id: 1, name: "IT部"}
  
    hobbys: [java,php,python]
  1. 功能测试看到效果
@RunWith
(SpringRunner.class)
@SpringBootTest
public class SpringbootHelloConfigApplicationTests {

          
    @Autowired
    private Employee employee;

          
    @Test
    public void contextLoads() {
                    
        System.out.println(employee);
          }

}
  1. 引入依赖加入
  • 映射写配置时没有提示,我们可以加一个依赖
  • 加上后,运行/测试一下 就可以有提示了
<dependency>
          
    <groupId>org.springframework.boot</groupId>
          
    <artifactId>spring-boot-configuration-processor</artifactId>
          
    <optional>true</optional></dependency>

三.propertie的写法

3.1 解决idea中写properties的中文问题

3.2 application.properties

emp.username=小王
emp.age=32
emp.born-date=1999/01/01
emp.department.id=1
emp.department.name=俱乐部
emp.email=zhao@itsource.cn
emp.sex=true
emp.hobbys=java,h5,ui

四.Value方法注入值

4.1 value注入的三个方式

  • 方式一:直接注入
  • 方式二: 获取配置文件中的值
  • 方式三: 写相应的计算表达式
@Component//@ConfigurationProperties(prefix="emp")public class Employee {

    
    @Value("${emp.username}")
    
    private String username;
    
    private String email;
    
    @Value("#{3*7}")
    
    private Integer age;
    
    @Value("false")
    
    private Boolean sex;
    ...省略
}

4.2 value与直接注入的区别

 

@ConfigurationProperties

@Value

简单案例

效果

批量注入

单个注入

 

松散绑定

×

user_name/user-name == userName

SpEL支持

×

#{3*7}

复杂类型封装

×

${emp.hobbys}

数据校验(JSR303)

×

 

五.加载指定的配置文件

5.1 加载局部配置文件(@PropertySource)

  1. 新建一个文件 

  1. 在文件中添加内容
emp.username=小王
emp.age=32
emp.born-date=1999/01/01
emp.department.id=1
emp.department.name=俱乐部
emp.email=zhao@itsource.cn
emp.sex=true
emp.hobbys=java,h5,ui
读取相应的文件配置
@Component@ConfigurationProperties(prefix="emp")@PropertySource({"classpath:employee.properties"})
public class Employee {

    private String username;
    private String email;
}    

5.2 加载XML文件(@ImportResource)

SpringBoot虽然提倡零配置,但是真实开发依然会遇到需要用到xml的情况,所以SpringBoot也提供了相应的方案让我们可以直接读取xml

@ImportResource(locations = {"classpath:application.xml"})@SpringBootApplication
public class Springboot02ConfigApplication {

    public static void main(String[] args) {
        SpringApplication.run(Springboot02ConfigApplication.class, args);
    }

}

5.3 自定义配置类向容器注入组件

  1. 准备配置类
    • @Configuration:代表这是一个配置类
    • @Bean:当前方法的返回值是一个bean
/**
 * @Configuration:表示当前类是一个配置类(相当于一个配置文件)
 */@Configurationpublic class BeanConfig {

    /**
     * 把返回的值变成一个Bean,方法名就是bean的id
     * @return
     */
    @Bean
    public Employee employeeService(){
        return  new Employee();
    }
}
  1. 功能测试
@RunWith(SpringRunner.class)@SpringBootTestpublic class Springboot02ConfigApplicationTests {
    @Autowired
    private ApplicationContext applicationContext;
    @Test
    public void contextLoads() {
        //根据名称获取对应的数据
        Employee employee = (Employee)applicationContext.getBean("employeeService");
        System.out.println(employee);
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值