SpringBoot中免除了大部分手动配置,但是对于一些特定的情况,还是需要我们进行手动配置的,SpringBoot为我们提供了application.properties配置文件,让我们可以进行自定义配置,来对默认的配置进行修改,以适应具体的生产情况,当然还包括一些第三方的配置。几乎所有配置都可以写到application.peroperties文件中,这个文件会被SpringBoot自动加载,免去了我们手动加载的烦恼。但实际上,很多时候我们却会自定义配置文件,这些文件就需要我们进行手动加载,SpringBoot是不会自动识别这些文件的,下面就来仔细看看这些方面的内容。
配置文件分为两种:
application.properties 【 这种格式更容易理解】
application.yml 【这种格式更简洁】
这两种配置文件放在resource 文件下,这样程序就会自动加载这个配置文件;
注意: bootstrap.properties 的优先级特别高,若是application.properties 与bootstrap.properties 同事存在时候,首先要加载 bootstrap 数据。
配置文件加载:
application.properties 这个是系统默认的配置文件,主动加载这些信息,会成为全局类的配置变量;
疑问来了?------ 自己写配置文件怎么办?
第一: 将自己写的配置文件放在application.properties 中 (哈哈,这样可以,但是总感觉不方便)
第二:自己写配置文件,路径一般是在 resource下面 比如:book,properties 然后注入到容器中去
代码来了
代码讲解
方式一:
book.properties
book.value=sunfch
book.name=inpsur company sunfengchuan
book.price=39
需要注入的类
package com.inspur.sunfch.tax.sunfch_springboot.app1.data;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
@Configuration // 这个是将当前类注入到容器中
@PropertySource("classpath:book.properties") // 这个是加载配置文件
@Data // 这个lombok 简化代码
public class Constant {
@Value("${book.value}")
private String value;
@Value("${book.name}")
private String name;
@Value("${book.price}")
private int price;
}
启动类函数:【这里不需要做任何改动】
package com.inspur.sunfch.tax.sunfch_springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
public class SunfchSpringbootApplication {
public static void main(String[] args) {
SpringApplication.run(SunfchSpringbootApplication.class, args);
}
}
应用类函数:
package com.inspur.sunfch.tax.sunfch_springboot.app1.controller;/**
* @Auther: sunfch
* @Date: 2018/12/23 20:28
* @Description:
*/
import com.inspur.sunfch.tax.sunfch_springboot.AppConstant.APPCONTANT;
import com.inspur.sunfch.tax.sunfch_springboot.app1.data.Constant;
import com.inspur.sunfch.tax.sunfch_springboot.app1.data.Dept;
import com.inspur.sunfch.tax.sunfch_springboot.app1.service.AppService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author sunfch
* @create 2018-12-23 20:28
* @desc
**/
@RestController
public class App1controller {
// 类已经注入到容器中了,这个地方直接用可以了
@Autowired
private Constant constant;
/**
* @Description: //TODO 测试,返回列表
* @Author: sunfch
* @Date: 2019/1/15 19:19
* @Param:
* @Return:
*/
@RequestMapping(value = "returnvalue")
@ResponseBody
public String returnvalue() {
String value = APPCONTANT.APP_NAME;
return constant.getName();
}
}
目录结构
这样就能使用自己编写的配置文件了。。