“Nomic AI(@nomic_ai)”是指“Nomic AI 的 Twitter 帐户是@nomic_ai”,
06-18
3. @PropertySource 和 @ImportSource @ImportResource 注解可以读取指定的外部配置文件 @PropertySource 注解可以加载指定的配置文件,与 Spring Boot 无关的配置文件放置在非主配置文件中。例如,与person相关的配置可以放在新创建的person.properties中。
您可以使用@PropertySource注释来加载这个单独的配置文件。该注解仍然需要与@ConfigurationProperties注解配对。
使用。@PropertySource注解的使用 在Person实体类上使用@PropertySource注解来指定配置文件。
配置全部用 person.properties 编写 代码语言: javascript copy @ConfigurationProperties(prefix = "person")@PropertySource(value = {"classpath:person.properties"})@Component@Datapublic class Person { private String lastName;私有整数年龄;私人布尔老板;私人出生日期;私有 Map
@ConfigurationProperties(prefix = "person") 默认为 application.properties 配置文件。如果需要加载其他配置文件,则需要指定@PropertySource注解。
。使用@ImportResource 注释执行测试。
@ImportResource注解用于导入Spring配置文件,并使配置文件中的配置生效。 @ImportResource注解的属性值是一个数组,表示可以一次导入多个配置文件。
创建服务包,创建HelloService,在Spring配置文件spring.xml中配置代码语言: javascript copy public class HelloService{},在resources目录下创建Spring配置文件spring.xml,配置一个Java Bean进行注册Spring容器中的bean标签代码语言: javascript copy
spring.xml 配置文件。与通过配置文件注册bean或组件相比,Spring Boot建议通过配置类将组件注入到容器中,并通过完整的注解注入。
新建config包,添加CustConfig配置类,并添加@Configuration表示当前类为配置类,替换spring.xml配置文件。 @Bean注解作用于方法。
该方法的返回值是注入到容器中的组件。方法名称是容器中组件的名称。
代码语言:javascript copy @Configuration //表示当前类是配置类,替换spring.xml配置文件 public class CustConfig { //替换bean标签,将方法返回值注入到容器中,默认方法名是导入到容器中的组件 name // 也可以通过 name 属性指定组件的名称 @Bean(name = "helloService") public HelloService helloService(){ System.out.println("@Bean 注解添加了将 HelloService 组件添加到容器中!”);返回新的HelloService();再次执行HelloServiceTest。组件也可以通过配置类注入到容器中。
4. 配置文件中的占位符。可以在配置文件中使用占位符来支持配置文件中的属性引用。
读取Person实体类上的主配置文件application.properties 代码语言:javascript copy # 使用随机值 person.last-name=stark1${random.value}person.age=${random.int}person.birth=/ 12 /12person.boss=trueperson.maps.k1=v1person.maps.k2=v2person.list=a,b,c# 引用之前配置的属性 person.dog.name=${person.last-name}_pipiperson.dog。 age=2 执行 PersonTest 测试以引用不存在的属性。
当引用不存在的属性时,将按原样输出。修改配置文件,引用不存在的person.hello属性。
代码语言: javascript copy person.dog.name=${person.hello }_pipi 执行 PersonTest 测试 {person.hello} 并按原样输出。为不存在的引用属性设置默认值。
当该属性不存在时,也可以设置默认值,以避免原样输出。如果不存在,则取默认值,在“:”后面设置默认值。
代码语言:javascript复制person.dog。 name=${person.hello:stark}_pipi 再次执行PersonTest测试,成功获取设置的默认值 5.Profiles多环境支持 Profiles是Spring对不同环境下不同配置功能的支持。
它可以快速激活或指定参数。切换环境。
application.properties 格式的多配置文件模式 代码语言: javascript copy # 使用开发环境 spring.profiles.active=devapplication.yml 格式多文档块模式 代码语言: javascript copy spring:profiles: # 激活测试环境 active: 测试命令行方法代码语言:javascript 复制 java -jar xxx.jar --spring.prifles.active=devjvm 参数 方法代码语言:javascript 复制 -Dspring.profiles.active=devproperties 格式配置文件 多配置文件方法创建两个属性格式配置文件、application-test.properties 和 application-dev.properties,通过设置端口号来确定使用的配置文件。 application.properties默认使用的代码语言: javascript copy server.port=server.servlet.context-path=/dev 代码语言:javascript copy server.port=server.servlet.context-path=/test 可以添加配置在 application.properties 中激活哪个配置文件 代码语言:javascript 复制 spring.profiles.active=dev 启动应用程序 根据输出端口号可以确定 application-dev.properties 配置文件被激活。
YML格式配置文件多文档块模式 在YML配置文件中可以使用“---”来区分文档块,文档块相当于一个单独的配置文件。使用文档块,您可以在一个配置文件中编写开发配置和测试配置。
代码语言:javascript copy spring:profiles: #激活dev配置 active: dev---# dev配置详细信息 server: port: spring:profiles: dev- --# test 配置详细信息 server: port: spring:profiles: test-- -注释掉properties格式配置文件中的所有内容。根据控制台输出的端口号可以确定启动应用程序。
YML文档块中的DEV部分是激活命令行参数方式,在执行启动命令时使用“--spring.profile.active=dev”选择激活的配置文件。命令行方式的优先级高于配置文件启动应用程序。
您可以根据端口判断是否激活测试配置,也可以通过在终端中执行启动命令来判断测试配置是否激活。代码语言: javascript copy java -jar spring-boot-configuration-0.0.1-SNAPSHOT.jar --spring.profiles.active=test 虚拟机参数模式修改启动配置,在VM选项中添加激活 配置再次启动并控制台成功输出指定配置文件中设置的端口号命令行、虚拟机配置以及配置文件的优先级。
命令行优先级大于虚拟机代码 language: javascript copy spring:profiles: active: dev 虚拟机优先级大于配置文件代码 language: javascript copy spring:profiles: active: test 命令行 > virtual machine > 配置文件 6、配置文件位置优先级 Spring Boot启动时会扫描以下位置的配置文件,作为Spring Boot配置文件的默认master,优先级从高到低 file:/config/file:/classpath:/configclasspath :/ 您还可以通过 spring.config.location 更改默认配置。也可以参考配置文件位置优先级。
你是否曾深陷其中? Spring Boot中的这些“陷阱”(之一)——配置文件加载顺序的“陷阱”在互补的项目目录下添加一个config目录,在该目录下添加application.yml,并配置端口号代码语言: javascript 复制服务器: port: 资源目录下的配置文件新增内容 代码语言: javascript 复制服务器: servlet: context-path: /app port: 启动项目,清除VM参数和Programes参数,同上配置会被覆盖,不同的配置是对spring.config.location的补充。更改默认配置文件的位置并在其他目录中创建新的配置文件。
代码语言: javascript 复制 服务器: 端口: 包 项目代码语言: javascript 复制 java -jar spring-boot-configuration-0.0.1 -SNAPSHOT.jar --spring.config.location=/Users/jingnan/Practice/March/application .ymlplus: spring.config.location 无法实现配置互补,或者直接替换所有配置文件 spring.config.additional-location 可以在指定配置文件时同时实现互补代码语言: javascript copy java -jar spring- boot-configuration-0.0.1-SNAPSHOT.jar --spring.config.additional-location=/Users/jgnan/Practice/March/application .yml 参考文档 Spring Boot 官方文档 外部应用程序属性 七、配置文件的加载顺序 Configuration文件 官方文档 Spring Boot 支持多种外部配置方式,优先级从高到低依次为命令行参数、虚拟机参数、操作系统参数、JAR 包 外部应用程序-{profile}.properties 或 yml 格式配置文件 JAR 包带 spring.profile 内部 application-{profile}.properties 或 yml 格式配置文件 JAR 包 带 spring.profile 外部 JAR 包 不带 spring。 Profile的application-{profile}.properties或yml格式的配置文件不在JAR包内。
application-{profile}.properties 与 spring.profile 或 yml 格式的配置文件。由@Configuration类上的@PropertySource指定的配置文件。
由 SpringApplication.setDefaultProperties 指定的默认属性。首先加载profile命令的配置文件,从外向内查找8个。
、Spring Boot自动配置项。 Spring Boot配置文件中的所有配置项可以参考官方文档Common Application Properties。
从源码中查看配置项。 Spring Boot中包含的自动配置类都在org.springframework.boot.autoconfigure包下的META-中。
在INF/spring.factories中输入DispatcherServletAutoConfiguration自动配置类的源码,使用@AutoConfigureAfter注解进行标记。代码语言: javascript copy @AutoConfigureAfter(ServletWebServerFactoryAutoConfiguration.class) 并进入ServletWebServerFactoryAutoConfiguration类 代码语言: javascript copy @EnableConfigurationProperties(ServerProperties.class) 该类使用@EnableConfigurationProperties注解进行标记。
指定的XxxProperties类包含配置项DispatcherServletAutoConfiguration和ServletWebServerFactoryAutoConfiguration使用相同的配置相关注解。 @Configuration:表示这是一个配置类。
和之前的XML配置文件一样,可以到容器中注册组件或者Bean @EnableConfigurationProperties:启动指定类的ConfigurationProperties功能,并将配置文件中对应的值绑定到XxxProperties @AutoConfigureAfter:配置完自动配置后执行自动配置类@ConFigurationProperties:从配置文件中获取指定的值和Bean属性。板子顶部的所有配置项均来自于自动配置类中启用的 XxxProperties 类。
也就是说,一旦自动配置类生效,这个配置类就会交给容器。注册各种组件。
这些组件的属性是从 @EnableConfigurationProperties 注解指定的 XxxProperties 类获取的。这些类中的每个属性和配置文件都是一一绑定的。
总结 XxxxAutoConfiguration 是一个自动配置类,注册在容器中 组件 ?@ConditionalOnJava 判断系统 Java 版本是否符合要求 @ConditionalOnBean 判断容器中是否存在指定的 Bean @ConditionalOnMissingBean 判断容器中是否不存在指定的 Bean @ ConditionalOnExpression 判断是否满足 SpEL 表达式 @ConditionalOnClass 判断系统中是否存在指定的类 @ConditionalOnMissingClass 判断系统中不包含指定的类 @ConditionalOnSingleCandidate 判断容器中是否只有一个 Bean 还是第一个 Bean @ConditionalOnProperty判断指定属性是否具有指定值 @ConditionalOnResource 判断类路径中是否存在指定资源文件 @ConditionalOnWebApplication 判断当前环境是否为 Web 环境 @ConditionalOnNotWebApplication 当前环境是否不是 Web 环境 @ConditionalOnJndi 有指定项在当前的 Jndi 中。如何查看启用和未启用的配置。
官方配置文档中的第一项是debug。设置debug=true时控制台会输出哪些配置类?启用代码语言:javascripttCopy debug: true 启动主程序。
控制台将打印出当前应用程序中所有激活和非活动的配置。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-17
06-17
06-17
06-18
06-18
06-17
06-18
最新文章
【玩转GPU】ControlNet初学者生存指南
【实战】获取小程序中用户的城市信息(附源码)
包雪雪简单介绍Vue.js:开学
Go进阶:使用Gin框架简单实现服务端渲染
线程池介绍及实际案例分享
JMeter 注释 18 - JMeter 常用配置组件介绍
基于Sentry的大数据权限解决方案
【云+社区年度征文集】GPE监控介绍及使用