您的位置:首页 > 财经 > 产业 > 西安宏博网络科技有限公司_上海展台搭建_重庆高端品牌网站建设_综合型b2b电子商务平台网站

西安宏博网络科技有限公司_上海展台搭建_重庆高端品牌网站建设_综合型b2b电子商务平台网站

2025/1/5 19:57:45 来源:https://blog.csdn.net/2301_80055001/article/details/144817541  浏览:    关键词:西安宏博网络科技有限公司_上海展台搭建_重庆高端品牌网站建设_综合型b2b电子商务平台网站
西安宏博网络科技有限公司_上海展台搭建_重庆高端品牌网站建设_综合型b2b电子商务平台网站

配置文件的格式

配置⽂件主要是为了解决硬编码带来的问题, 把可能会发⽣改变的信息, 放在⼀个集中的地⽅, 当启动某个程序时, 应⽤程序从配置⽂件中读取数据, 并加载运⾏
硬编码是将数据直接嵌⼊到程序或其他可执⾏对象的源代码中, 也就是"代码写死"
使⽤配置⽂件, 可以使程序完成⽤⼾和应⽤程序的交互, 或者应⽤程序与其他应⽤程序的交互

SpringBoot 配置文件

SpringBoot⽀持并定义了配置⽂件的格式, 也在另⼀个层⾯达到了规范其他框架集成到SpringBoot的⽬的
项⽬的启动端⼝
SpringBoot内置了Tomcat服务器, 默认端⼝号是8080, 但是⽤⼾电脑上8080端⼝号有可能就被其他应⽤程序占⽤了, 所以SpringBoot需要⽀持让⽤⼾⾃定义端⼝号
数据库连接信息
为了更⽅便简单的访问数据库, 出现了⼀些持久层框架, 其实就是对JDBC进⾏了更深层次的封装.让⽤⼾通过简单⼏⾏代码就可完成数据库的访问. 但是不同的应⽤程序访问的数据库不同, 这些持久层框架就需要⽀持⽤⼾可以⾃定义配置数据库的连接信息
Tocmat 默认端⼝号是8080, 所以程序访问时的端⼝号也是8080
如果8080端⼝号已经被其他进程使⽤了——>我们可以通过配置⽂件来修改服务的端⼝号
SpringBoot 在创建项⽬时, 就已经帮我们创建了配置⽂件
                                       运行程序

配置⽂件的格式

Spring Boot 配置⽂件有以下三种:
application.properties
application.yml
application.yam
当应⽤程序启动时, Spring Boot会⾃动从classpath路径找到并加载 application.properties application.yaml 或者 application.yml ⽂件
也可以通过spring.config.name指定⽂件路径和名称
特殊说明
1. 理论上讲 .properties .yml 可以并存在于⼀个项⽬中,当 .properties 和 .yml 并存时,两个配置都会加载. 如果配置⽂件内容有冲突, 则以 .properties 为主, 也就是 .properties 优先级更⾼
2. 虽然理论上来讲 .properties 可以和 .yml 共存,但实际的业务当中,我们通常会采取⼀种
统⼀的配置⽂件格式,这样可以更好的维护(降低故障率)

properties 配置文件说明"

properties 配置⽂件是最早期的配置⽂件格式,也是创建 SpringBoot 项⽬默认的配置⽂件

配置文件中使用 “#” 添加注释信息

properties 配置是以 key-value 的形式配置的

properties 配置⽂件中会有很多的冗余的信息 

yml 配置文件说明

yml 是树形结构的配置⽂件,它的基础语法是"key: value"
key 和 value 之间使⽤英⽂冒号加空格的⽅式组成, 空格不可省略
连接数据库:
yml 方式
properties 方式

yml 使用进阶

yml 配置不同数据类型及 null

//字符串
string:value: Hello
//布尔类型
boolean:value: true
//整数
int:value: 18
//浮点数
float:value: 3.14
//Null
null:value: //空字符串(一般用''表示,更直观)
empty:value: ''

yml 配置读取

在项⽬中,想要主动的读取配置⽂件中的内容,可以使⽤ @Value 注解来实现
@Value 注解使⽤ "${}"  的格式读取
@RequestMapping("/yml")
@RestController
public class YmlController {@Value("${server.port}")private Integer port;@RequestMapping("/port")public String getPort() {return "从配置文件中得到:" + port;}
}

字符串默认不用加上单引号或者双引号,如果加英文的单双引号可以表示特殊的含义
@Value("${string.str1}")
private String str1;
@Value("${string.str2}")
private String str2;
@Value("${string.str3}")
private String str3;@RequestMapping("/string")
public String string(){System.out.println(str1);System.out.println(str2);System.out.println(str3);return "从配置文件中得到";
}

•  字符串默认不⽤加上单引号或者双引号
单引号会转义特殊字符,使其失去特殊功能, 始终是⼀个普通的字符串
双引号不会转义字符串⾥⾯的特殊字符, 特殊字符会表⽰本⾝的含义 
这个时候就不能⽤ @Value 来读取配置中的对象了,此时要使⽤另⼀个注解 @ConfigurationProperties 来读取
配置 对象
@ConfigurationProperties(prefix = "userinfo")
@Controller
@Data
public class UserInfo {private String name;private Integer age;public UserInfo(){}public UserInfo(String name){this.name = name;}
}@Autowired
private UserInfo userInfo;
@RequestMapping("/userinfo")
public String getUserInfo(){return "从配置文件中获取对象:"+userInfo;
}

 配置 List

@ConfigurationProperties(prefix = "list")
@Controller
@Data
public class MyList {private List<UserInfo> userInfoList;
}@Autowired
private MyList list;
@RequestMapping("/list")
public String getList(){return "从配置文件中获取:"+list+",size:"+list.getUserInfoList().size();
}

配置 Map

@ConfigurationProperties(prefix = "map")
@Controller
@Data
public class MyMap {private HashMap<String,String> HashMap;
}@Autowired
private MyMap map;
@RequestMapping("/map")
public String getMap(){return "从配置文件中获取:"+map+",size:"+map.getHashMap().size();
}

优点:

1. 可读性⾼,写法简单, 易于理解
2. ⽀持更多的数据类型, 可以简单表达对象, 数组, List,Map等数据形态

3. ⽀持更多的编程语⾔, 不⽌是Java中可以使⽤, 在Golang, Python, Ruby, JavaScript中也可以使⽤

缺点:

1. 不适合写复杂的配置⽂件
2. 对格式有较强的要求

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com