目录
Springboot 读取pro文件注入static静态变量
springboot静态属性注入的解决
第一种方式
第二种方式
第三种方式
首页 Java java教程 Springboot如何读取自定义pro文件注入static静态变量

Springboot如何读取自定义pro文件注入static静态变量

May 30, 2023 am 09:07 AM
static springboot pro

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.java    Created on 2019年9月11日
 * Copyright (c) 2019 ZDSoft Networks, Inc. All rights reserved.
 * $Id$
 */
package com.hxyc.config.properties;
 
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
 
/**
 * @author huangzy
 * @version $Revision: 1.0 $, $Date: 2019年9月11日 上午10:29:35 $
 */
@Configuration
@PropertySource(value = "classpath:config/mailConfig.properties", encoding = "UTF-8")
@Component
public class MailConfig {
    public static String host;
    public static Integer port;
    public static String userName;
    public static String passWord;
    public static String emailForm;
    public static String timeout;
    public static String personal;
    public static String html;
    public static String subject;
 
    /**
     * @return Returns the host.
     */
    public static String getHost() {
        return host;
    }
 
    /**
     * @param host
     *            The host to set.
     */
    @Value("${mail.host}")
    public void setHost(String host) {
        MailConfig.host = host;
    }
 
    /**
     * @return Returns the port.
     */
    public static Integer getPort() {
        return port;
    }
 
    /**
     * @param port
     *            The port to set.
     */
    @Value("${mail.port}")
    public void setPort(Integer port) {
        MailConfig.port = port;
    }
 
    /**
     * @return Returns the userName.
     */
    public static String getUserName() {
        return userName;
    }
 
    /**
     * @param userName
     *            The userName to set.
     */
    @Value("${mail.userName}")
    public void setUserName(String userName) {
        MailConfig.userName = userName;
    }
 
    /**
     * @return Returns the passWord.
     */
    public static String getPassWord() {
        return passWord;
    }
 
    /**
     * @param passWord
     *            The passWord to set.
     */
    @Value("${mail.passWord}")
    public void setPassWord(String passWord) {
        MailConfig.passWord = passWord;
    }
 
    /**
     * @return Returns the emailForm.
     */
    public static String getEmailForm() {
        return emailForm;
    }
 
    /**
     * @param emailForm
     *            The emailForm to set.
     */
    @Value("${mail.emailForm}")
    public void setEmailForm(String emailForm) {
        MailConfig.emailForm = emailForm;
    }
 
    /**
     * @return Returns the timeout.
     */
    public static String getTimeout() {
        return timeout;
    }
 
    /**
     * @param timeout
     *            The timeout to set.
     */
    @Value("${mail.timeout}")
    public void setTimeout(String timeout) {
        MailConfig.timeout = timeout;
    }
 
    /**
     * @return Returns the personal.
     */
    public static String getPersonal() {
        return personal;
    }
 
    /**
     * @param personal
     *            The personal to set.
     */
    @Value("${mail.personal}")
    public void setPersonal(String personal) {
        MailConfig.personal = personal;
    }
 
    /**
     * @return Returns the html.
     */
    public static String getHtml() {
        return html;
    }
 
    /**
     * @param html
     *            The html to set.
     */
    @Value("${mail.html}")
    public void setHtml(String html) {
        MailConfig.html = html;
    }
 
    /**
     * @return Returns the subject.
     */
    public static String getSubject() {
        return subject;
    }
 
    /**
     * @param subject
     *            The subject to set.
     */
    @Value("${mail.subject}")
    public void setSubject(String subject) {
        MailConfig.subject = subject;
    }
 
}
登录后复制

springboot静态属性注入的解决

第一种方式

通过springboot组件初始化生命周期进行属性(对象)赋值

@Component
public class DSHWechatApiUtil extends DSHBaseController {
    @Autowired
    private IThirdPartyAuthDao thirdPartyAuthDao;
    private static IThirdPartyAuthDao staticThirdPartyAuthDao;
    
    @PostConstruct
    public void init() {
        staticThirdPartyAuthDao = thirdPartyAuthDao;
    }
    public static JSONObject getAuthorizerToken(String componentAccessToken, String authorizerAppid, String authorizerRefreshToken) {
        JSONObject returnObject = new JSONObject();
        try {
            if (DSHUtils.isEmpty(componentAccessToken)) {
                componentAccessToken = staticThirdPartyAuthDao.selectWechatValue(DSHConstants.WECHAT_PARAMS.COMPONENT_ACCESS_TOKEN);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return returnObject;
    }
}
登录后复制

可以看到,当DSHWechatApiUtil工具类组件进行初始化时,调用@PostConstruct注解标注的方法,对静态变量进行了赋值。

第二种方式

通过@Value()注解

@Value()注解不会对静态变量进行属性注入,通过第一种方式的思维,那么我们肯定得想个办法,在这个组件初始化时也来赋值。

第一种方式肯定也是可以的,先写一个属性,然后通过@Value()注解对这个属性进行赋值,最后通过@PostConstruct注解方式赋值给静态属性。

这里我们要采用另一个方式,这里的方式是通过set方法来赋值。属性是static修饰的,get方法也是static修饰的,但是set方法不能是static修饰,使用@Value()注解来修饰set方法。

Springboot如何读取自定义pro文件注入static静态变量

这样就能成功注入。

第三种方式

第三种方式和第二种差不多,

@ConfigurationProperties(prefix = ProjectConfig.PROJECT_PREFIX)
public class ProjectConfig {
    public static final String PROJECT_PREFIX = "project";
    /**
     * 系统版本号
     */
    private String version;
    /**
     * 项目名称
     */
    private String name;
    /**
     * 版权年份
     */
    private String copyrightYear;
    /**
     * 实例演示开关
     */
    private static boolean demoEnabled;
    /**
     * 获取地址ip开关
     */
    private static boolean addressEnabled;
    public String getVersion() {
        return version;
    }
    public void setVersion(String version) {
        this.version = version;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getCopyrightYear() {
        return copyrightYear;
    }
    public void setCopyrightYear(String copyrightYear) {
        this.copyrightYear = copyrightYear;
    }
    public boolean isDemoEnabled() {
        return demoEnabled;
    }
    public void setDemoEnabled(boolean demoEnabled) {
        ProjectConfig.demoEnabled = demoEnabled;
    }
    public static boolean isAddressEnabled() {
        return addressEnabled;
    }
    public void setAddressEnabled(boolean addressEnabled) {
        ProjectConfig.addressEnabled = addressEnabled;
    }
}
登录后复制

如上述代码,只要把set方法设置为非静态,那么这个配置类的静态属性就能成功注入了。

以上是Springboot如何读取自定义pro文件注入static静态变量的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

小米平板6和pro哪个值得入手 小米平板6和pro哪个值得入手 Feb 07, 2024 pm 08:36 PM

许多用户都不太清楚小米平板6和pro哪个值得入手,从配置来看,肯定是Pro的更高配置是推荐的,但也要综合价格和自己的预算来看,不同的产品定位的人群也是不同的。小米平板6和pro哪个值得入手答:小米平板6Pro会更好,不管是性能还是拍照续航都会更好。1、处理器小米平板6:骁龙870小米平板6Pro:性能更强大的骁龙第一代骁龙8+处理器2、电池大小小米平板6:8840mAh,67W秒充小米平板6Pro:8600mAh,33W快充小米平板6的续航上表现会更加的优秀,但是充电会比较慢。3、拍照小米平板6

iPhone 15 Pro Max vs iPhone 14 Pro Max:它们之间的对比和区别是什么? iPhone 15 Pro Max vs iPhone 14 Pro Max:它们之间的对比和区别是什么? Sep 19, 2023 pm 08:29 PM

iPhone15Pro与iPhone14Pro:规格比较以下是iPhone15ProMax和iPhone14ProMax的规格比较:iPhone15ProMaxiPhone14ProMax显示尺寸6.7英寸6.7英寸显示技术超级视网膜XDROLED超级视网膜XDROLED分辨率2796x1290像素,460ppi2796x1290像素,460ppi刷新率120赫兹120赫兹峰值亮度2,000尼特2,000尼特尺寸6.29x3.02x0.32英寸6.33x3.06x0.31英寸重量221克240克

如何启动小米手环8pro 如何启动小米手环8pro Jan 14, 2024 am 08:51 AM

不少用户在第一次接触使用小米手环8的时候不知道该怎么操作使用开机,其实方法也很简单,我们只需要找到USB数据线然后把手表和电源连接起来,然后冲一段时间电以后就可以按键开机了。小米手环8pro怎么开机1、首先把手表安装好,就是把主题和表带两边对接连上。2、然后我们第一次开机是需要连接充电线的,连接方法就在手表底部。3、等待手表震动一下就可以进行开机了,随后就可以和你的手机进行连接了。>>>

SpringBoot与SpringMVC的比较及差别分析 SpringBoot与SpringMVC的比较及差别分析 Dec 29, 2023 am 11:02 AM

SpringBoot和SpringMVC都是Java开发中常用的框架,但它们之间有一些明显的差异。本文将探究这两个框架的特点和用途,并对它们的差异进行比较。首先,我们来了解一下SpringBoot。SpringBoot是由Pivotal团队开发的,它旨在简化基于Spring框架的应用程序的创建和部署。它提供了一种快速、轻量级的方式来构建独立的、可执行

macbookair和pro的区别 macbookair和pro的区别 Feb 08, 2024 am 09:57 AM

macbookair是苹果的一款笔记本电脑,很多用户好奇macbookair和pro之间,有哪些区别,这两个笔记本在处理器核心,主频以及显卡类型上都有一些区别。macbookair和pro的区别:1、处理器核心,线程不同:macbookair的处理器拥有双核心,四线程。而Pro比macbookair更强大,拥有四核心,八线程。2、处理器主频不同:macbookair的处理器是1.6GHz的主频。pro的处理器主频是1.4GHz,比macbookair低了一些。3、显卡不同:macbookair采

小米Pro14发布日期 小米Pro14发布日期 Jan 05, 2024 pm 02:50 PM

小米pro14已经上市,而且它的配置作为商务办公本来说也是非常不错的了,而且还有三种处理器配置可以选择,价格也不是特别高。很多小伙伴不知道小米Pro14的具体上市时间。小米pro14上市时间答:2021年11月10日小米Pro14锐龙版开启预约,首发价5299元起。2022年7月4日,小米笔记本Pro14发布,7月8日零点正式开售。小米pro14介绍1、屏幕配备14英寸2.5K超视网膜屏,分辨率为2560x1600,屏占比高达88%,拥有100%sRGB色域,刷新率为120Hz。2、外观采用6系

springboot怎么获取application.yml里值 springboot怎么获取application.yml里值 Jun 03, 2023 pm 06:43 PM

在项目中,很多时候需要用到一些配置信息,这些信息在测试环境和生产环境下可能会有不同的配置,后面根据实际业务情况有可能还需要再做修改。我们不能将这些配置在代码中写死,最好是写到配置文件中,比如可以把这些信息写到application.yml文件中。那么,怎么在代码里获取或者使用这个地址呢?有2个方法。方法一:我们可以通过@Value注解的${key}即可获取配置文件(application.yml)中和key对应的value值,这个方法适用于微服务比较少的情形方法二:在实际项目中,遇到业务繁琐,逻

三摄加持 20 倍变焦,荣耀亲选小湃智能摄像头 Pro 创新来袭 三摄加持 20 倍变焦,荣耀亲选小湃智能摄像头 Pro 创新来袭 Aug 23, 2024 pm 09:44 PM

您家里装摄像头了吗?近些年,家用摄像头产品一下就成了爆款。我问了身边的小伙伴们,好家伙~居然每家都有,甚至有的还不止一台。但随着产品的普及,也随之带来了一些使用过程中的吐槽点。比如同一时间只能看到一个地方,再想看其他地方还得来回调整云台旋转摄像头,观看画面有一定的盲区和时间差;或者想仔细看看家中某个位置时,发现画面模糊根本看不清晰;等等......在体验上大打折扣。荣耀亲选与小湃科技共同推出荣耀亲选小湃智能摄像头Pro主打"三镜头双画面"。为行业及用户痛点提供了全新的解决思路

See all articles