写在前面
SpringBoot项目,因为逻辑直接写在启动类中的main方法,所以把需要从配置文件中读取属性值的成员变量定义成了静态(main方法为静态方法,静态只能调用静态)
遇到的问题
@Value注解不能直接给静态成员变量赋值
问题的原因
静态变量是类变量,依赖注入基于对象层面,理论上来讲,给静态成员变量赋值的唯一方式是通过:类名.静态成员变量名
解决方案
使用静态成员变量的非静态set方法,set方法内部使用类名.静态成员变量名接收属性值
补充说明
可以使用@ConfigurationProperties注解替代@Component注解,然后在启动类上加上@EnableConfigurationProperties注解
@EnableConfigurationProperties注解的作用:使用 @ConfigurationProperties 注解的类生效