您的位置:首页 > 汽车 > 新车 > 上海格物致品网络科技有限公司_制作网页怎么插入图片_app开发软件_核心关键词是什么意思

上海格物致品网络科技有限公司_制作网页怎么插入图片_app开发软件_核心关键词是什么意思

2025/1/12 1:56:28 来源:https://blog.csdn.net/weixin_63205365/article/details/144999718  浏览:    关键词:上海格物致品网络科技有限公司_制作网页怎么插入图片_app开发软件_核心关键词是什么意思
上海格物致品网络科技有限公司_制作网页怎么插入图片_app开发软件_核心关键词是什么意思

最近困扰了很久的问题,有个需求是想启动springboot的时候传一些命令行参数,然后某个类静态变量读取,根据这个参数达成一些判断,就是大致开关的意思。

静态变量不像控制层,服务层里面的变量那样,可以直接从spring工厂读取到。static修饰的变量属于类,然后spring管理的是类实例(对象),所以需要其他方式获取。

最简单的就是让可以读取配置文件内值的类,先读取,后再赋值。

application.yml定义值:

default:advancetime: ${data.advancetime:30}openstatus: ${data.openstatus:1}

$是意思是命令行参数替换的,":"冒号后是默认值,相当于没有命令行参数替换的话直接赋值30和1,一般docker的话也不用这个。

再定义一个配置类,专门读取和赋值静态变量:

@Configuration
public class StaticFieldConfig {@Value("${default.advancetime}")private String advancetime;@Value("${default.openstatus}")private String openstatus;@Beanpublic void initAdvancetime() {XmlGenerator.setAdvancetime(advancetime);}@Beanpublic void initOpenstatus() {StatusConst.setOpenstatus(openstatus);}
}

由于@Value在依赖注入时期,@Bean是方法级别且在依赖注入阶段完成后,所以@Value会比@Bean快一些。

此时以StatusConst这个类为例,根据上面的代码,定义一个变量OPEN_STATUS:

public class StatusConst {public static String OPEN_STATUS = null;public static void setOpenstatus(String openstatus) {StatusConst.OPEN_STATUS = openstatus;System.out.println("StatusConst.OPEN_STATUS:"+StatusConst.OPEN_STATUS);}
}

当@Value完成后,@Bean被调用该方法即可完成静态变量赋值。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com