spring中value注解,springboot 注解动态赋值

  spring中value注解,springboot 注解动态赋值

  00-1010前导方案1,方案2,方案3,使用场景总结。最近做项目的时候,给静态变量赋值,用了@value注释,结果获取总是null。

  1.spring不允许/支持向静态变量注入值。2.Spring的@Value依赖注入依赖于set方法。3.set方法是一种常见的对象方法。4.静态变量是类的属性,静态没有set方法。

  00-1010在Spring Boot使用@Value()只能给普通变量注入值,不能直接给静态变量赋值。

  例如,application-dev.properties配置文件具有以下配置:

  在给普通变量赋值时,只需在变量声明上直接添加@Value()注释,如下所示:

  当你想给一个静态变量注入一个值时,直接在静态变量声明上添加@Value()注释是无效的,例如:

  虽然编译运行没有错误,但是经过调试可以看到,这个注释方法中的mailUsername、mailPassword、mailHost的值都是null,也就是说直接读取静态变量的配置文件是无效的,如下图所示:

  00-1010要给静态变量赋值,可以使用set()方法,在这个方法中需要给类添加@Component注释。方法名(如setMailUsername)和参数名(如Username)可以任意命名,如下所示:

  调试结果如下:

  @ component公共类jdconfig {/* *翻译系统地址*/公共静态字符串url/* *转换系统应用系统id */公共静态字符串sysId/* *是否打开身份验证*/public static Boolean is auth;/* *转换系统应用系统密钥(开通认证需要填写)*/public静态字符串sysKey@ Autowired(required=false)@ Value(Value= $ { JD . server host : } )public void setUrl(String URL){ JD config . URL=URL;} @ Autowired(required=false)@ Value(Value= $ { contract . JD . appkey : } )public void set sysId(String sysId){ JD config . sysId=sysId;} @ Autowired(required=false)@ Value(Value= $ { JD . isAuth : true } )public void set auth(Boolean isAuth){ JD config . isAuth=isAuth;} @ Autowired(required=false)@ Value(Value= $ { contract . JD . appsecurity : } )public void set sysKey(String sysKey){ JD config . sysKey=sysKey;}公共字符串getUrl() {返回url}公共字符串get sysId(){ return sysId;} public Boolean getIsAuth(){ return is auth;}公共字符串get sysKey(){ return sysKey;}}

  00-1010如果觉得@value标注麻烦。您可以使用@ConfigurationProperties批注来代替,这样更简洁。

  要在前缀中写入适当的方法名(例如setOssUrl),它必须与属性一致。例如,编写setUrl()会将@Component注释注入到失败的类中。最近要求类中有几个静态变量。初始化时,它们的值需要读取一个配置文件,获取一个代码,然后用这个代码拼接。此代码不是静态变量。是如何实现的?代码如下:

  @Value(${projectCode} )私有字符串project code;公共静态字符串COOPERATIVE _ GOV _ TEMPLATE _ KEY//message SMS配置公共静态字符串DEPOLY _ KEY//配置公共静态字符串msg _ depoly _ key,获取消息短消息的详细信息;//过滤配置公共静态字符串msg _ filter _ key@ post construct public void init(){ COOPERATIVE _ GOV _ TEMPLATE _ KEY=project code : TEMPLATE ;de poly _ KEY=project code : DEPOLY ;MSG _ de poly _ KEY=project code : msgdeply ;MSG _ FILTER _ KEY=project code : MSG FILTER ;}这样当项目开始时,这些静态变量就会有值。一定要注意,这个类要由spring管理,也就是要用@ controller、@ service、@ component等注释。

  00-1010类,添加@ Component annotation @ post construct annotation修改赋值操作的方法。

  00-1010那么问题来了!在什么场景下我们需要给静态变量注入值?

  第一场

  场景2

  通过在工具的静态变量中注入一个值,可以直接在静态方法中使用。这就是我在本文中遇到的场景。

  

目录

本文从一个实际问题出发,探讨了springboot中的三种静态变量注入方案,希望对大家有所帮助。

 

  这就是本文对跳羚的详细解释。如果你通过@Value注释给静态变量注入值,就是这样。关于SpringBoot @Value的更多信息,请搜索之前关于popular IT的文章或者继续浏览下面的相关文章。我希望你以后能更多地支持流行音乐!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: