当前位置:首页 > 数码 > Springboot-治感性能属性的机制-PropertySource-中的 (springernature)

Springboot-治感性能属性的机制-PropertySource-中的 (springernature)

admin8个月前 (04-29)数码37

SpringFramework中的PropertySource是一种用于治感性能属性的机制,它准许你将性能消息从各种起源(如属性文件、环境变量、数据库等)加载到运行程序中。在Spring中,PropertySource通罕用于支持外部化性能,这象征着可以在不修正代码的状况下修正运行程序的性能,而无需从新编译或从新部署运行程序。PropertySource的外围概念是将键值对(属性)映射到运行程序中的属性或bean属性。

上方是PropertySource的用法具体说明及示例代码:

创立自定义PropertySource

可以创立自定义的PropertySource来加载性能属性。通常,须要承袭 PropertySource 类并成功 getProperty(Stringname) 方法来失掉属性值。以下是一个自定义PropertySource的示例:

importorg.springframework.core.env.PropertySource;publicclassCustomPropertySourceextendsPropertySource<String>{privateMap<String,String>properties=newHashMap<>();publicCustomPropertySource(Stringname){super(name);//在结构函数中加载性能属性properties.put("custom.property1","value1");properties.put("custom.property2","value2");}@OverridepublicObjectgetProperty(Stringname){returnproperties.get(name);}}

注册自定义PropertySource

可以将自定义的PropertySource注册到Spring的 Environment 中,以便运行程序可以访问性能属性。通常,这是在Spring性能类中成功的。以下是一个示例性能类:

importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.core.env.Environment;importorg.springframework.core.env.MutablePropertySources;@ConfigurationpublicclassConfig{@BeanpublicCustomPropertySourcecustomPropertySource(){returnnewCustomPropertySource("customPropertySource");}@BeanpublicvoidaddCustomPropertySourceToEnvironment(Environmentenvironment,CustomPropertySourcecustomPropertySource){if(environmentinstanceofConfigurableEnvironment){ConfigurableEnvironmentconfigurableEnvironment=(ConfigurableEnvironment)environment;MutablePropertySourcespropertySources=configurableEnvironment.getPropertySources();propertySources.addFirst(customPropertySource);}}}

在上述性能中,咱们创立了一个 CustomPropertySource 对象,并将其注册到运行程序的 Springboot Environment 中,以使运行程序能够访问这些自定义属性。

经常使用性能属性

一旦注册了自定义PropertySource,可以经过 Environment 或注解来访问性能属性。以下是示例代码:

importorg.springframework.beans.factory.annotation.Value;importorg.springframework.core.env.Environment;importorg.springframework.stereotype.Service;@ServicepublicclassMyService{@Value("${custom.property1}")privateStringcustomProperty1;privateEnvironmentenvironment;publicMyService(Environmentenvironment){this.environment=environment;}publicvoidprintCustomProperties(){System.out.println("custom.property1(using@Value):"+customProperty1);System.out.println("custom.property2(usingEnvironment):"+environment.getProperty("custom.property2"));}}

在上方的示例中,咱们经常使用注解和 Environment 来失掉性能属性的值。这两种方法都可以访问已注册的PropertySource中的属性。

性能文件(application.properties)中的属性

也可以在运行程序的性能文件(通常是 application.properties application.yml )中定义属性。这些属性会智能加载到Spring的 Environment 中,而不须要额外的自定义PropertySource。

#application.propertiesapplication.property3=value3
#application.ymlapplication:property4:value4

可以像上方的示例一样经常使用注解或 Environment 来失掉这些属性的值。

总之,Spring的PropertySource提供了一种弱小的形式来治理运行程序的性能属性。可以创立自定义的PropertySource来加载属性,也可以经常使用智能加载的性能文件来定义属性。无论哪种形式,都可以在运行程序中轻松访问和经常使用这些属性。

示例中完整代码,可以从上方网址失掉:


springboot有哪几种读取配置的方法

springboot有4种读取配置的方法,具体如下:

1、通过@Value注解读取配置文件:使用@Value注解可以将配置文件中的属性值注入到Spring组件中。

2、通过Environment对象读取配置文件:使用Environment对象可以获取所有的配置属性,包括系统属性、环境变量、配置文件等。

3、通过@ConfigurationProperties读取配置文件:使用@ConfigurationProperties注解可以将配置文件中的属性绑定到一个Java类中,并通过Spring容器自动装配。

4、通过@PropertySource读取配置文件:使用@PropertySource注解可以将配置文件加载到Spring容器中,并可以通过@Autowired注入到其他组件中。

Spring Boot具有的特点

1、独立运行的Spring项目

Spring Boot可以以jar包的形式独立运行,Spring Boot项目只需通过命令“java–jar ”即可运行。可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs。

2、内嵌Servlet容器

Spring Boot使用嵌入式的Servlet容器(例如Tomcat、Jetty或者Undertow等),应用无需打成WAR包。

3、提供starter简化Maven配置

Spring Boot提供了一系列的“starter”项目对象模型(POMS)来简化Maven配置。

4、提供了大量的自动配置

Spring Boot提供了大量的默认自动配置,来简化项目的开发,开发人员也通过配置文件修改默认配置。尽可能自动配置Spring容器。

SpringBoot 配置文件详解(告别XML)

快速学会和掌握 SpringBoot 的 核心配置文件的使用。

SpringBoot 提供了丰富的外部配置 ,常见的有:

其中核心配置文件我们并不陌生,主要以Key-Value的形式进行配置,其中属性Key主要分为两种:

在 添加配置如下:

①添加数据源信息

在 添加配置如下:

① 添加认证信息,其中 .* 是自定义的属性前缀。

② 添加随机值,其中.* 是自定义的属性前缀。

使用方法: @ConfigurationProperties(prefix = )

使用说明:提供 Setter方法 和 标记组件 Component

如何验证是否成功读取配置?答:这里可以简单做个验证,注入 MyDataSource ,使用 Debug 模式可以看到如下信息:

使用方法: @Value(.*)

使用说明:提供 Setter方法 和 标记组件 Component

注意事项:@Value不支持注入静态变量,可间接通过Setter注入来实现。

关于两者的简单功能对比:

显然,前者支持松绑定的特性更强大,所以在实际开发中建议使用@ConfigurationProperties来读取自定义属性。

SpringBoot 默认会加载这些路径加载核心配置文件,按优先级从高到低进行排列:具体规则详见ConfigFileApplicationListener

如果存在多个配置文件,则严格按照优先级进行覆盖,最高者胜出:

举个简单的例子,例如再上述位置都有一个 ,并且每个文件都写入了=xx(xx分别是9001,9002,9003,9004),在启动成功之后,最终应用的端口为:9004。图例:

如果想修改默认的加载路径 或者 调改默认的配置文件名,我们可以借助命令行参数进行指定,例如:

YAML是JSON的一个超集,是一种可轻松定义层次结构的数据格式。

答: 因为配置文件这东西,结构化越早接触越规范越好。这里推荐阅读阮一峰老师写的 YAML语言教程,写的很简单明了。

引入依赖: 在POM文件引入 snakeyaml的依赖。

使用说明: 直接在类路径添加 即可。

例如下面这两段配置是完全等价的:

① 在 配置数据源:

② 在 配置数据源:

在项目的实际开发中,我们往往需要根据不同的环境来加载不同的配置文件。例如生产环境,测试环境和开发环境等。此时,我们可以借助 Profiles 来指定加载哪些配置文件。例如:

温馨提示:如果指定了多个配置文件,则按顺序加载,其中最后的优先级最高,也就是最后的会覆盖前者。

使用方法: 使用Maven插件打包好项目,然后在当前路径,执行DOS命令:java -jar =8081 ,在控制台可看到应用端口变成了8081。

实现原理: 默认情况下,SpringBoot会将这些命令行参数转化成一个Property,并将其添加到 Environment 上下文。

温馨提示: 由于命令行参数优先级非常之高,基本高于所有常见的外部配置,所以使用的时候要谨慎。详见 PropertySource 执行顺序 。

关闭方法: 如果想禁用命令行属性,可以设置如下操作(false)

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: Springboot

“Springboot-治感性能属性的机制-PropertySource-中的 (springernature)” 的相关文章

Springboot框架中事情监听和颁布机制详解 (springernature)

Springboot框架中事情监听和颁布机制详解 (springernature)

事情监听和颁布是SpringFramework中的一种机制,用于成功松懈耦合的组件之间的通讯。上方是事情监听和颁布的具体环节: 事情颁布的环节: 事情监听的环节: SpringF...

起步依赖及其成功原理-Springboot (起步依赖及其原因分析)

起步依赖及其成功原理-Springboot (起步依赖及其原因分析)

了解Springboot起步依赖及其成功原理 "起步依赖"通常是指在软件开发中经常使用的一种构建工具,它可以智能下载、性能和治理名目中所需的依赖项。在开发中,最经常出现的构建工具是Maven...