高端购物网站,中国建筑人才网官方网,wordpress 分页seo,做论坛网站怎么样备案文章目录 1.common-env-starter模块1.目录结构2.DotenvEnvironmentPostProcessor.java 在${xxx}解析之前执行#xff0c;提前读取配置3.EnvProperties.java 这里的path只是为了代码提示4.EnvAutoConfiguration.java Env模块自动配置类5.spring.factories 自动配置和注册Enviro… 文章目录 1.common-env-starter模块1.目录结构2.DotenvEnvironmentPostProcessor.java 在${xxx}解析之前执行提前读取配置3.EnvProperties.java 这里的path只是为了代码提示4.EnvAutoConfiguration.java Env模块自动配置类5.spring.factories 自动配置和注册EnvironmentPostProcessor6.pom.xml 2.common-env-starter-demo模块1.目录结构2.pom.xml3.application.yml 配置测试的数据4.EnvConfig.java5.EnvApplication.java 启动类6.测试 1.common-env-starter模块
1.目录结构 2.DotenvEnvironmentPostProcessor.java 在${xxx}解析之前执行提前读取配置
package com.sunxiansheng.env.processor;import io.github.cdimascio.dotenv.Dotenv;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.env.EnvironmentPostProcessor;
import org.springframework.core.env.ConfigurableEnvironment;/*** Description: 在${xxx}解析之前执行可以读取xxx设置到环境中在后续的解析时就会进行替换了** Author sun* Create 2025/1/10 19:40* Version 1.0*/
public class DotenvEnvironmentPostProcessor implements EnvironmentPostProcessor{Overridepublic void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {// 从 Spring 的配置中获取 sun-rays.env.pathString dotenvPath environment.getProperty(sun-rays.env.path);if (dotenvPath ! null) {// 加载 .env 文件Dotenv dotenv Dotenv.configure().directory(dotenvPath).filename(.env).load();// 将 .env 中的值注入到系统属性中确保占位符解析时可用dotenv.entries().forEach(entry -environment.getSystemProperties().put(entry.getKey(), entry.getValue()));System.out.println(Loaded .env from path: dotenvPath);} else {System.err.println(sun-rays.env.path not configured);}}
}3.EnvProperties.java 这里的path只是为了代码提示
package com.sunxiansheng.env.config.properties;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;/*** Description: 这里的path只是为了代码提示实际上DotenvEnvironmentPostProcessor.java不从这里获取配置** Author sun* Create 2025/1/10 20:04* Version 1.0*/
ConfigurationProperties(prefix sun-rays.env)
Data
public class EnvProperties {/*** .env文件的绝对路径*/private String path;
}4.EnvAutoConfiguration.java Env模块自动配置类
package com.sunxiansheng.env.config;import com.sunxiansheng.env.config.properties.EnvProperties;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;import javax.annotation.PostConstruct;/*** Description: Env模块自动配置类** Author sun* Create 2025/1/10 19:57* Version 1.0*/
Configuration
EnableConfigurationProperties({EnvProperties.class}) // 启用配置类
Slf4j
public class EnvAutoConfiguration {/*** 自动配置成功日志*/PostConstructpublic void logConfigSuccess() {log.info(EnvAutoConfiguration has been loaded successfully!);}
}5.spring.factories 自动配置和注册EnvironmentPostProcessor
org.springframework.boot.autoconfigure.EnableAutoConfiguration\
com.sunxiansheng.env.config.EnvAutoConfiguration
org.springframework.boot.env.EnvironmentPostProcessor\
com.sunxiansheng.env.processor.DotenvEnvironmentPostProcessor6.pom.xml
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdcom.sunxiansheng/groupIdartifactIdsunrays-common/artifactIdversion2.0.0/version/parentartifactIdcommon-env-starter/artifactIddependencies!-- 可以使用.env文件提前加载配置确保数据安全 --dependencygroupIdio.github.cdimascio/groupIdartifactIdjava-dotenv/artifactId/dependency/dependencies
/project2.common-env-starter-demo模块
1.目录结构 2.pom.xml
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdcom.sunxiansheng/groupIdartifactIdsunrays-common-demo/artifactIdversion2.0.0/version/parentartifactIdcommon-env-starter-demo/artifactIddependencies!-- common-env-starter --dependencygroupIdcom.sunxiansheng/groupIdartifactIdcommon-env-starter/artifactIdversion2.0.0/version/dependency/dependencies
/project3.application.yml 配置测试的数据
sun-rays:log4j2:home: /Users/sunxiansheng/IdeaProjects/sunrays-framework/sunrays-common-demo/common-env-starter-demo/logs # 日志根目录(默认./logs)module: sunrays-common-demo/common-env-starter-demo # 模块根目录从仓库根目录开始(默认defaultModule)env:path: /Users/sunxiansheng/IdeaProjects/sunrays-framework/sunrays-common-demo/common-env-starter-demo # .env文件的绝对路径
env:test: ${ENV_TEST}4.EnvConfig.java
package com.sunxiansheng.env.config;import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;import javax.annotation.PostConstruct;/*** Description: Env配置类测试读取数据** Author sun* Create 2025/1/10 20:55* Version 1.0*/
Configuration
Slf4j
public class EnvConfig {Value(${env.test})private String test;PostConstructpublic void init() {// 测试读取log.info(test{}, test);}
}5.EnvApplication.java 启动类
package com.sunxiansheng.env;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** Description: Env** Author sun* Create 2025/1/10 20:53* Version 1.0*/
SpringBootApplication
public class EnvApplication {public static void main(String[] args) {SpringApplication.run(EnvApplication.class, args);}
}6.测试