环境:SpringBoot2.7.12 + SpringCloud2021.0.7
如果使用 Spring Boot 配置日志设置,则应将此配置放在 bootstrap.[yml | properties] 中,以便将其应用于所有事件。注意:为了让 Spring Cloud 正确初始化日志配置,不能使用自定义前缀。例如,在初始化日志系统时,Spring Cloud 无法识别使用 custom.loggin.logpath 的情况。
应用程序会侦听EnvironmentChangeEvent事件,并以几种标准方式对变化做出反应。当EnvironmentChangeEvent事件被监听到时,它将收到发生变化的keys,应用程序将会做如下处理:
你也可以自定义监听EnvironmentChangeEvent事件
@Componentpublic class PackApplicationEventListener implements ApplicationListener<EnvironmentChangeEvent> { @Override public void onApplicationEvent(EnvironmentChangeEvent event) { System.out.println(event.getKeys()) ; }}
那些只能初始化一次的 Bean 上使用 @RefreshScope 注解。如果某个 Bean 是 "不可变"的,则必须使用 @RefreshScope 注解或通过如下配置指明完整的类名:
spring: cloud: refresh: extra-refreshable: com.pack.PackUser
注意:
如果你使用的数据源 Bean 是 HikariDataSource,则无法刷新。这是 spring.cloud.refresh.never-refreshable 的默认值。如果需要刷新,请选择不同的数据源实现。
Spring Cloud 有一个环境预处理器,用于在本地解密属性值。可以使用 {cipher}* 形式的加密值,只要存在有效的密钥,它们就会在主应用程序上下文获得环境设置之前被解密。要在应用程序中使用加密功能,需要在类路径中包含 Spring Security RSA(Maven 坐标:org.springframework.security:spring-security-rsa)。
#加密配置encrypt: key: aaaabbbbccccdddd salt: dead#---#加密关键信息db: password: '{cipher}6c05a3e62aa1f71b814fd283fc15197ec18a83b67d9da27dcb63c1b3925d68c1'
这里默认使用的AES算法,所以通过如下方式生成密文即可
TextEncryptor textEncryptor = new EncryptorFactory("xxx").create("xxxx") ;textEncryptor.encrypt(...)
对于 Spring Boot Actuator 应用程序,还提供了一些额外的管理端点:
通过 spring.factories添加 PropertySourceLocator 类型的 Bean 来添加其他属性源。如下示例:
public class CustomPropertySourceLocator implements PropertySourceLocator { @Override public PropertySource<?> locate(Environment environment) { Map<String, Object> values = new HashMap<>() ; values.put("config.mq.queue", "pack.test.queue") ; MapPropertySource source = new MapPropertySource("PACK", values) ; return source ; }}
在spring.factories中添加如下配置
org.springframework.cloud.bootstrap.BootstrapConfiguration=/com.pack.CustomPropertySourceLocator
以上是本篇文章的全部内容,希望对你有帮助。
本文链接:http://www.28at.com/showinfo-26-79989-0.htmlSpringCloud项目开发中实用技巧总结
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com