Java Spring Boot VS .NetCore (一)来一个简单的 Hello World

Java Spring Boot VS .NetCore (二)实现一个过滤器Filter

Java Spring Boot VS .NetCore (三)Ioc容器处理

Java Spring Boot VS .NetCore (四)数据库操作 Spring Data JPA vs EFCore

Java Spring Boot VS .NetCore (五)MyBatis vs EFCore

Java Spring Boot VS .NetCore (六) UI thymeleaf vs cshtml

Java Spring Boot VS .NetCore (七) 配置文件

Java Spring Boot VS .NetCore (八) Java 注解 vs .NetCore Attribute

Java Spring Boot VS .NetCore (九) Spring Security vs .NetCore Security

Java Spring Boot VS .NetCore (十) Java Interceptor vs .NetCore Interceptor

Java Spring Boot VS .NetCore (十一)自定义标签 Java Tag Freemarker VS .NetCore Tag TagHelper

Spring Boot 配置文件

主要说下 properties & yml

下面来看下

application.properties的文件格式

Spring.datasource.url=jdbc:mysql://192.168.0.233:3306/test1?useSSL=false
Spring.datasource.username=uoso
Spring.datasource.password=uosotech_123
Spring.datasource.driver-class-name=com.mysql.jdbc.Driver

yml配置格式

spring1:url1: dbc:mysql://192.168.0.102:3306/test1?useSSL=false

那么在代码中我们怎么来使用这些配置文件呢?

这里要介绍的就是注解 @Component  、 @Value 的使用了

默认只要编写名称为application.*.yml 都是能够被直接使用的,只需要把 配置文件映射到类的属性里面,代码如下

@Component
public class PropertiesConfig {@Value("${Spring.datasource.url}")private String database;public String getDatabase() {return database;}public void setDatabase(String database) {this.database = database;}
}

如果世界使用的application.yml 能够自动被填充的配置资源里面,写法给上面样就能拿到配置

我这里自定义一个yml 如:test.yml

这里需要添加依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency>

重新构建后,我新建一个class ,这里需要说明的就是 @ProtertySource  指定yml的路径 需要注意是的 classpath 这个指向的地址,是打包后的目录,调试的时候肯定找不到对应路径目录的文件需要自己配置下,否则就放在下图的目录结构

@Component
@PropertySource(value = "classpath:/test.yml")
@ConfigurationProperties(prefix = "spring1")
public class YMLConfig {public String getUrl1() {return url1;}public void setUrl1(String url1) {this.url1 = url1;}@Value("${url1}")private  String url1;

使用通过注解 @Autowired \ @Resource 都可以

//测试yml配置
    @Autowiredprivate YMLConfig ymlConfig;@Testpublic  void testYmlConfig(){System.out.print(ymlConfig.getUrl1());}

得到了我们想要的结果,下面在来说下.NetCore中的配置使用情况

.NetCore 配置文件

.NetCore提供了json 、xml 的方式来实现配置,这里我以json 来举个例子看下使用方式

默认也有一个appsettings.json 的文件,在不使用自定义配置的情况下,系统会加载这个配置文件 ,那么如果要把配置文件映射到class里面需要怎么处理呢?

下来创建一个配置类

 public class AuthorityConfig{public string Authority { get; set; }public bool RequireHttpsMetadata { get; set; }}

在appsetting里面我们根据目录结构添加即可

  "AuthorityConfig": {"Authority": "http://localhost:20001","RequireHttpsMetadata": false}

那么怎么把这两个Bind起来呢? 前面可以看到Java是通过@Value注解

.NetCore则是通过 在Startup 启动类中添加服务 里面有 IConfiguration 接口,根据这个接口来操作即可

services.AddOptions();
services.Configure<AuthorityConfig>(Configuration.GetSection("AuthorityConfig"));

根据节点位置配置关联的类,需要使用的时候通过构造函数注入即可

如果需要添加自定义的配置,我们使用启动类的构建来创建相关路径下的相关文件绑定到配置中Configuration 最后通过 Configuration 来绑定 Class之间的关系

public Startup(IConfiguration configuration, IHostingEnvironment env){var configurationbuilder = new ConfigurationBuilder().SetBasePath(env.ContentRootPath).AddJsonFile($"appsettings.json", optional: true, reloadOnChange: true).AddXmlFile($"appsettings.xml", optional: true, reloadOnChange: true).AddEnvironmentVariables();Configuration = configurationbuilder.Build();// Configuration = configuration;}

总结

其实 Spring Boot中也有其他的方式加载自定义的文件  ,这里的 ConfugurationBuilder 跟 Spring Boot中的  PropertySourcesPlaceholderConfigurer 类似,Java还提供了2中创建方式

1、YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();

2、YamlPropertySourceLoader loader = new YamlPropertySourceLoader();

MutablePropertySources sources = new MutablePropertySources();

可以看到第二种里面多了MutablePropertySources,英文上就是加载多个资源文件的,事实就是这个意思,加载多个资源文件,而第一种没抛出异常

下面来解析下第一种:看源码

public class YamlPropertiesFactoryBean extends YamlProcessor implements FactoryBean<Properties>, InitializingBean {private boolean singleton = true;@Nullableprivate Properties properties;public YamlPropertiesFactoryBean() {}public void setSingleton(boolean singleton) {this.singleton = singleton;}public boolean isSingleton() {return this.singleton;}public void afterPropertiesSet() {if (this.isSingleton()) {this.properties = this.createProperties();}}

没有异常,而且是单例

看下第二种的源码,抛出了IO异常,在找不到文件目录文件的情况下会抛出异常

public class YamlPropertySourceLoader implements PropertySourceLoader {public YamlPropertySourceLoader() {}public String[] getFileExtensions() {return new String[]{"yml", "yaml"};}public List<PropertySource<?>> load(String name, Resource resource) throws IOException {if (!ClassUtils.isPresent("org.yaml.snakeyaml.Yaml", (ClassLoader)null)) {throw new IllegalStateException("Attempted to load " + name + " but snakeyaml was not found on the classpath");} else {List<Map<String, Object>> loaded = (new OriginTrackedYamlLoader(resource)).load();if (loaded.isEmpty()) {return Collections.emptyList();} else {List<PropertySource<?>> propertySources = new ArrayList(loaded.size());for(int i = 0; i < loaded.size(); ++i) {String documentNumber = loaded.size() != 1 ? " (document #" + i + ")" : "";propertySources.add(new OriginTrackedMapPropertySource(name + documentNumber, (Map)loaded.get(i)));}return propertySources;}}}
}

配置这一块就说道这里~~~

下一章来介绍下自定的注解,同时也会结合.NetCore自定义属性标签来比较来时比较说明。

转载于:https://www.cnblogs.com/liyouming/p/9483045.html

Java Spring Boot VS .NetCore (七) 配置文件相关推荐

  1. Spring Boot(17)配置文件解析

    Spring Boot(17)配置文件解析 前言 上一篇介绍了Spring Boot的入门,知道了Spring Boot使用"习惯优于配置"(项目中存在大量的配置,此外还内置了一个 ...

  2. Java+Spring Boot 二手书交易系统

    目录 1 系统简介 2 系统相关技术 2.1 Java EE 2.2 Springboot框架 2.3 Maven技术 2.4 Tomcat服务器 2.5 MySQL 3 需求分析 3.1 需求概述 ...

  3. JAVA Spring Boot与海康威视摄像头的故事

    <菜鸟学JAVA第一篇> 前言:JAVA Spring Boot与海康威视摄像头的故事 关于本贴 干货部分 进入官网,选择sdk下载: 下载所需要的开发包(以下教程以windows为例): ...

  4. 【直播回顾】云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第19讲):Java Spring Cloud微服务架构模式与开发实战...

    主讲人:徐雷(云栖社区特邀Java专家) 徐雷,花名:徐雷frank:资深架构师,MongoDB中文社区联席主席,吉林大学计算机学士,上海交通大学硕士.从事了 10年+开发工作,专注于分布式架构,Ja ...

  5. 解决Spring boot中读取属性配置文件出现中文乱码的问题

    解决Spring boot中读取属性配置文件出现中文乱码的问题 参考文章: (1)解决Spring boot中读取属性配置文件出现中文乱码的问题 (2)https://www.cnblogs.com/ ...

  6. Java Spring Boot 2.0 实战之制作Docker镜像并推送到Docker Hub和阿里云仓库

    内容摘要:大规模集群快速部署Java应用,需要制作Docker镜像,本次课程详细介绍如何制作Java程序的Docker镜像文件,深入解析DockerFile核心参数,以及实践演练把我们制作的Docke ...

  7. Spring Boot(2) 配置文件

    Spring Boot(2) 配置文件 学习视频:https://www.bilibili.com/video/BV19K4y1L7MT?p=20 1.properties 语法:同以前的proper ...

  8. 云栖社区特邀专家徐雷——Java Spring Boot开发实战系列课程【往期直播回顾】...

    徐雷,花名:徐雷frank:资深架构师,MongoDB中文社区联席主席,吉林大学计算机学士,上海交通大学硕士.从事了 10年+开发工作,专注于分布式架构,Java Spring Boot.Spring ...

  9. 毕设项目——智慧小区系统(Java Spring Boot+Vue ElementUI)

    毕设项目--智慧小区系统(Java Spring Boot+Vue ElementUI) 项目初衷(最真实版) 系统技术分析 前端界面 后端及数据库 系统功能介绍 小区业主端 物业人员端 系统界面展示 ...

最新文章

  1. 度量 数据突变_4篇Nature“霸屏”!史上最大规模人类遗传变异体数据库发布
  2. 【SD】交货单如何在保存时更改LIKP表的值?
  3. PHP面试之二:高并发与大数据
  4. STM32之独立看门狗原理
  5. C语言八字图标软件,ico图标编辑器(Greenfish Icon Editor)
  6. Command line is too long. Shorten command line for Doc.generateAsciiDocs or
  7. SQL Server系统视图/表/功能。 现实生活中的常见问题和解决方案
  8. MediaWiki自动登陆和更新页面
  9. docker php gd扩展,docker安装php扩展gd库
  10. laravel下载文件
  11. premiere小tips(参考于干的教程)
  12. 面向对象的五个基本原则
  13. 新浪短网址api接口——5个可生成新浪t.cn短链的在线工具网站评测
  14. 对于Biotin-LC-NHS Estercas:72040-63-2与伯氨基 (-NH2) 反应的作用有哪些?
  15. php怎么使用sendcloud,高级功能 - SendCloud 文档中心 - SendCloud 文档中心
  16. 华为mate50pro和华为mate50RS的区别
  17. zynqmp Linux + 裸机 (A53-0 Linux,A53-1 2 3 裸机大数据量实时处理,R5-0 协议处理,R5-1 屏幕显示逻辑等)填坑笔记
  18. java通过aspose实现文档间格式转换
  19. windows system info
  20. 华为胡厚崑:不让任何一个人在数字世界中掉队

热门文章

  1. gzencode php demo,8个必备的PHP功能实例代码
  2. mysql mydumper_采用mydumper对MySQL部分数据库进行热备
  3. java jsp w3c报错_JSP JavaBean
  4. 上海大学计算机技术 a股,这所上海大学短时间就成为211,实力强劲却不为人知,适合捡漏...
  5. Java面试题中高级,神策数据Java面试题
  6. python【数据结构与算法】最大上升子序列(简单dp)
  7. 【微信小程序企业级开发教程】生命周期和app对象详解
  8. 【网页前端设计Front end】HTML语言基础.上(看不懂你来打我)
  9. python最终目标是什么_Python之父Guido谈Python的未来
  10. bat java cp_批处理中Copy与Xcopy命令的区别小结