redismanager 获取不到yml中的密码_Springboot配置Https中遇到的一个小坑

主要说下我在配置中踩到的一个坑。

我这里有一个老的应用,之前部署在tomcat下,现在用springboot进行了重构。现在直接使用jar包部署,所以需要把之前配置在tomcat中的ssl配置一直到springboot的配置文件下。

1,找到ssl文件

之前的tomcat中的配置ssl是在server.xml中,找到对应的配置代码

                        

顺藤摸瓜的找到jks文件,下载下来

2,springboot中的配置

springboot中的配置也很简单

server:ssl:  key-store-type: JKS  key-store: classpath:xxx.com.jks  key-store-password: 我的密码

key-store指的是jks文件的放置路径,我这里是直接放在resources下面

44bbf4e4b1e148de9a5cd76fb5224b97

3,启动

这样就算配置完了,简单吧,然后启动。华丽丽的报错了。棒棒的。

我们看下报错:

Caused by: java.lang.IllegalArgumentException: Invalid keystore format

说我们的文件格式不对。

但是我的这个文件在旧的网站用的好好的,经过比对,我确定文件是没问题的。

后来发现,我的原始jks文件是没有问题,但是经过maven打包之后的jks文件被改动了。

62f6dc3330474fa89c080568d2817f59

这是原始文件

b469ed0d10ec4170b36bfb5045f2da25

这是打包中的文件,

可以看到,变成了10k。大小都变了。看来maven真的做了什么操作

4,找到原因

我的项目里,使用了maven打包时,进行多环境配置。

        src/main/resources            true                          application.yml          application-dev.yml          application-prod.yml                src/main/resources      true                      application.yml          application-${profileActive}.yml        

我这里设置的目录是src/main/resources。所以resources下面的所有文件会被maven打开,并按照规则做一些改动。导致了我的jks文件被破坏。

5,解决

改一下maven配置:

        src/main/resources            true                          application.yml          application-dev.yml          application-prod.yml          *.jks                src/main/resources      true                      application.yml          application-${profileActive}.yml                src/main/resources      false                *.jks        

加上一个,打包时不要处理jks文件的配置。解决。

总结

回头想想,这个坑应该可以很快被识别出。因为maven打包后会修改我的yml配置文件。那么按照之前的配置,也会修改我的其他文件。还是对maven打包的理解不深,那么以后要注意,如果加入其他文件到resources下也可能出现这个问题。

在Spring Boot配置Redis需要在`application.yml`文件指定Redis的连接信息。以下是一个示例: ``` spring: redis: host: localhost port: 6379 password: password # 如果Redis设置了密码,需要提供密码 ``` 如果你的Redis实例没有设置密码,则可以省略`password`属性。 在代码使用Redis需要使用`Lettuce`或`Jedis`等Redis客户端库。以下是使用`Lettuce`连接Redis的示例: ``` @Configuration public class RedisConfig { @Value("${spring.redis.host}") private String redisHost; @Value("${spring.redis.port}") private int redisPort; @Value("${spring.redis.password}") private String redisPassword; @Bean public RedisConnectionFactory redisConnectionFactory() { RedisStandaloneConfiguration config = new RedisStandaloneConfiguration(); config.setHostName(redisHost); config.setPort(redisPort); config.setPassword(RedisPassword.of(redisPassword)); return new LettuceConnectionFactory(config); } @Bean public RedisTemplate<String, Object> redisTemplate() { RedisTemplate<String, Object> template = new RedisTemplate<>(); template.setConnectionFactory(redisConnectionFactory()); return template; } } ``` 在上面的示例,`redisConnectionFactory`方法创建了一个`LettuceConnectionFactory`对象,并将其配置为使用`application.yml`文件指定的Redis连接信息。`redisTemplate`方法创建了一个`RedisTemplate`对象,并将其配置为使用`redisConnectionFactory`方法创建的连接工厂。然后你就可以在代码使用`RedisTemplate`对象进行Redis操作了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值