Springboot如何读取自定义pro文件注入static静态变量
Springboot如何读取自定义pro文件注入static静态变量
本文小编为大家详细介绍“Springboot如何读取自定义pro文件注入static静态变量”,内容详细,步骤清晰,细节处理妥当,希望这篇“Springboot如何读取自定义pro文件注入static静态变量”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
Springboot 读取pro文件注入static静态变量
mailConfig.properties
#服务器mail.host=smtp.qq.com#端口号mail.port=587#邮箱账号mail.userName=hzy_daybreak_lc@foxmail.com#邮箱授权码mail.passWord=vxbkycyjkceocbdc#时间延迟mail.timeout=25000#发送人mail.emailForm=hzy_daybreak_lc@foxmail.com#发件人mail.personal=华夏衣裳#主题mail.subject=同袍用户激活#内容模板mail.html=您的邮箱验证码为:
MailConfig.java
/**@(#)MailConfig.javaCreatedon2019年9月11日*Copyright(c)2019ZDSoftNetworks,Inc.Allrightsreserved.*$Id$*/packagecom.hxyc.config.properties;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.context.annotation.Configuration;importorg.springframework.context.annotation.PropertySource;importorg.springframework.stereotype.Component;/***@authorhuangzy*@version$Revision:1.0$,$Date:2019年9月11日上午10:29:35$*/@Configuration@PropertySource(value="classpath:config/mailConfig.properties",encoding="UTF-8")@ComponentpublicclassMailConfig{publicstaticStringhost;publicstaticIntegerport;publicstaticStringuserName;publicstaticStringpassWord;publicstaticStringemailForm;publicstaticStringtimeout;publicstaticStringpersonal;publicstaticStringhtml;publicstaticStringsubject;/***@returnReturnsthehost.*/publicstaticStringgetHost(){returnhost;}/***@paramhost*Thehosttoset.*/@Value("${mail.host}")publicvoidsetHost(Stringhost){MailConfig.host=host;}/***@returnReturnstheport.*/publicstaticIntegergetPort(){returnport;}/***@paramport*Theporttoset.*/@Value("${mail.port}")publicvoidsetPort(Integerport){MailConfig.port=port;}/***@returnReturnstheuserName.*/publicstaticStringgetUserName(){returnuserName;}/***@paramuserName*TheuserNametoset.*/@Value("${mail.userName}")publicvoidsetUserName(StringuserName){MailConfig.userName=userName;}/***@returnReturnsthepassWord.*/publicstaticStringgetPassWord(){returnpassWord;}/***@parampassWord*ThepassWordtoset.*/@Value("${mail.passWord}")publicvoidsetPassWord(StringpassWord){MailConfig.passWord=passWord;}/***@returnReturnstheemailForm.*/publicstaticStringgetEmailForm(){returnemailForm;}/***@paramemailForm*TheemailFormtoset.*/@Value("${mail.emailForm}")publicvoidsetEmailForm(StringemailForm){MailConfig.emailForm=emailForm;}/***@returnReturnsthetimeout.*/publicstaticStringgetTimeout(){returntimeout;}/***@paramtimeout*Thetimeouttoset.*/@Value("${mail.timeout}")publicvoidsetTimeout(Stringtimeout){MailConfig.timeout=timeout;}/***@returnReturnsthepersonal.*/publicstaticStringgetPersonal(){returnpersonal;}/***@parampersonal*Thepersonaltoset.*/@Value("${mail.personal}")publicvoidsetPersonal(Stringpersonal){MailConfig.personal=personal;}/***@returnReturnsthehtml.*/publicstaticStringgetHtml(){returnhtml;}/***@paramhtml*Thehtmltoset.*/@Value("${mail.html}")publicvoidsetHtml(Stringhtml){MailConfig.html=html;}/***@returnReturnsthesubject.*/publicstaticStringgetSubject(){returnsubject;}/***@paramsubject*Thesubjecttoset.*/@Value("${mail.subject}")publicvoidsetSubject(Stringsubject){MailConfig.subject=subject;}}
springboot静态属性注入的解决
第一种方式
通过springboot组件初始化生命周期进行属性(对象)赋值
@ComponentpublicclassDSHWechatApiUtilextendsDSHBaseController{@AutowiredprivateIThirdPartyAuthDaothirdPartyAuthDao;privatestaticIThirdPartyAuthDaostaticThirdPartyAuthDao;@PostConstructpublicvoidinit(){staticThirdPartyAuthDao=thirdPartyAuthDao;}publicstaticJSONObjectgetAuthorizerToken(StringcomponentAccessToken,StringauthorizerAppid,StringauthorizerRefreshToken){JSONObjectreturnObject=newJSONObject();try{if(DSHUtils.isEmpty(componentAccessToken)){componentAccessToken=staticThirdPartyAuthDao.selectWechatValue(DSHConstants.WECHAT_PARAMS.COMPONENT_ACCESS_TOKEN);}}catch(Exceptione){e.printStackTrace();}returnreturnObject;}}
可以看到,当DSHWechatApiUtil工具类组件进行初始化时,调用@PostConstruct注解标注的方法,对静态变量进行了赋值。
第二种方式
通过@Value()注解
@Value()注解不会对静态变量进行属性注入,通过第一种方式的思维,那么我们肯定得想个办法,在这个组件初始化时也来赋值。
第一种方式肯定也是可以的,先写一个属性,然后通过@Value()注解对这个属性进行赋值,最后通过@PostConstruct注解方式赋值给静态属性。
这里我们要采用另一个方式,这里的方式是通过set方法来赋值。属性是static修饰的,get方法也是static修饰的,但是set方法不能是static修饰,使用@Value()注解来修饰set方法。
这样就能成功注入。
第三种方式
第三种方式和第二种差不多,
@ConfigurationProperties(prefix=ProjectConfig.PROJECT_PREFIX)publicclassProjectConfig{publicstaticfinalStringPROJECT_PREFIX="project";/***系统版本号*/privateStringversion;/***项目名称*/privateStringname;/***版权年份*/privateStringcopyrightYear;/***实例演示开关*/privatestaticbooleandemoEnabled;/***获取地址ip开关*/privatestaticbooleanaddressEnabled;publicStringgetVersion(){returnversion;}publicvoidsetVersion(Stringversion){this.version=version;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicStringgetCopyrightYear(){returncopyrightYear;}publicvoidsetCopyrightYear(StringcopyrightYear){this.copyrightYear=copyrightYear;}publicbooleanisDemoEnabled(){returndemoEnabled;}publicvoidsetDemoEnabled(booleandemoEnabled){ProjectConfig.demoEnabled=demoEnabled;}publicstaticbooleanisAddressEnabled(){returnaddressEnabled;}publicvoidsetAddressEnabled(booleanaddressEnabled){ProjectConfig.addressEnabled=addressEnabled;}}
如上述代码,只要把set方法设置为非静态,那么这个配置类的静态属性就能成功注入了。
读到这里,这篇“Springboot如何读取自定义pro文件注入static静态变量”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注恰卡编程网行业资讯频道。
推荐阅读
-
iphone12有必要更新ios16.2吗(苹果12 pro max更新ios 16怎么样)
苹果promax更新ios16怎么样?个人建议可以更新,苹果16.2系统还比较好,新的功能很多。iOS系统中加入到的专注模式...
-
iphone(13 pro max存储空间 iphone 14 pro max存储组合)
iphone14promax存储组合?iPhone14ProMax有四种存储容量选项:8GB、256GB、5GB,大是...
-
如何将三个变量放在一个表格中(unity pro xl 如何在硬件中添加变量标签)
unityproxl如何在硬件中添加变量标签?不知道你的变量标签是咋系统设置的,我这边打印出来可变数据标签的话,是会先将标签内...
-
iphone12(pro max价格 12promax和14怎么选择)
promax和14怎么选择?选promax,他建议使用的是全新一代的传感器。他的性能方面表现更可以提高一些,虽然他们处理器性能都是...
-
苹果手机媒体音量小怎么调(苹果14 pro max音量怎么调小)
苹果14promax音量怎么调小?然后首先按住手机左侧音量键就也可以将音量调小,这是最简便的。当看视频或则是打游戏时,音量太高...
-
第二代苹果笔记本macbook(pro macbookproa2251是第几代)
macbookproa2251是第几代?2020新款MacBookPro.3吋苹果笔记本电脑,型号A2251。配置为:【带触控...
-
苹果12promax有色调和色温调整吗(iphone12 pro max 发黄)
iphonepromax发黄?手机变黄的原因是手机开启了"眼睛保护模式和,或者是因为屏线烧了。要关闭护眼模式,操作步骤如下...
-
iphone(14 pro max怎么唤醒siri 苹果手机怎么设置siri一叫就出来)
苹果手机怎么设置siri一叫就出来?然后打开苹果手机的设置,能找到语音助手,能找到语音唤醒Siri就可以了。怎么唤醒苹果耳机?1、...
-
vue动态添加删除输入框(springboot vue怎么让数据库显示出来)
springbootvue怎么让数据库显示出来?一般情况下是前端调阅后端接口,来获取到数据库的数据,后端哪里会把数据库的数据整理...
-
华为watch(3 pro 莫名其妙震动 华为watch2为什么震动没了)
华为watch2为什么震动没了?华为watch2是没有震荡有200元以内原因:1、手表启动了免打扰模式并在免打扰时间段内。2、手表...