Windows下在IntelliJ中从文件读取Spring Boot密钥库密码的方法
Spring Boot 密钥库密码非明文配置方案
一、从本地文件读取密码
直接在配置里写文件路径无法自动读取文件内容,需要借助Spring的扩展能力实现:
方法1:使用SpEL结合自定义文件读取逻辑
先在application.yml中配置文件路径:
keystore: password-file: C:/password/password.txt
然后编写配置类读取文件内容:
@Configuration public class KeystoreConfig { @Value("${keystore.password-file}") private String passwordFile; @Bean public String keystorePassword() throws IOException { // 读取文件并去除首尾空白字符 return Files.readString(Paths.get(passwordFile)).trim(); } }
后续需要使用密码的地方,直接注入这个Bean即可:
@Autowired private String keystorePassword;
方法2:自定义PropertySource(全局生效)
实现EnvironmentPostProcessor来加载文件内容到环境变量:
public class KeystorePasswordProcessor implements EnvironmentPostProcessor { @Override public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { try { String password = Files.readString(Paths.get("C:/password/password.txt")).trim(); Map<String, Object> props = Collections.singletonMap("keystore.password", password); environment.getPropertySources().addFirst(new MapPropertySource("keystoreProps", props)); } catch (IOException e) { throw new RuntimeException("Failed to read keystore password file", e); } } }
然后在src/main/resources/META-INF/spring.factories中注册这个处理器:
org.springframework.boot.env.EnvironmentPostProcessor=com.yourpackage.KeystorePasswordProcessor
这样就能直接在application.yml中用keystore.password引用读取到的密码了。
二、IntelliJ全局设置(对本机所有实例生效)
方法1:全局环境变量
- 打开IntelliJ,点击顶部菜单
File→Settings(Windows/Linux)或IntelliJ IDEA→Settings(Mac) - 进入
Appearance & Behavior→System Settings→Environment Variables - 点击
+新增变量:变量名KEYSTORE_PASSWORD,值填你的密钥库密码 - 保存后,在
application.yml中引用:
keystore: password: ${KEYSTORE_PASSWORD}
方法2:全局运行配置模板
- 点击顶部菜单
Run→Edit Configurations - 左侧选择
Templates→Spring Boot - 在
Environment variables栏添加KEYSTORE_PASSWORD=xxxyyyzzz - 保存模板后,所有新建的Spring Boot运行配置都会自动继承该变量,同样用
${KEYSTORE_PASSWORD}引用即可。
内容的提问来源于stack exchange,提问作者Java_Jack
相关产品推荐
相关产品推荐

