当前位置:

首页 > 编程开发 > Springboot如何读取自定义pro文件注入static静态变量

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

Process Lasso 专业版
Process Lasso 专业版

Process Lasso是一款功能Windows进程管理工具,可有效避免电脑出现蓝屏、假死等情况。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

立即下载
¥59
Windows 2026-09-24
正版软件 Windows Process 系统优化工具 专业版 进程管理

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.per

本文目录

    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方法设置为非静态,那么这个配置类的静态属性就能成功注入了。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Pro static
    相关文章 更多
    Java抽象方法修饰符限制:为何不能用private或static
    Java抽象方法修饰符限制:为何不能用private或static

    深入剖析Java中抽象方法为何严禁使用private和static修饰符。从面向对象契约规范、方法继承重写、JVM动态绑定(invokevirtual)与静态解析(invokestatic)等底层机制展开详细推导,结合编译报错示例与全景对比,彻底理清修饰符限制背后的设计逻辑。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。

    即将离开本站
    您即将前往第三方网站,请确认是否继续?