Maison >Java >javaDidacticiel >Comment Springboot lit les fichiers professionnels personnalisés et injecte des variables statiques

Comment Springboot lit les fichiers professionnels personnalisés et injecte des variables statiques

王林
王林avant
2023-05-30 09:07:391579parcourir

Springboot lit le fichier pro et injecte des variables statiques statiques

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 static property injection Résolvez

La première façon

Attribuer des attributs (objets) tout au long du cycle de vie d'initialisation du composant 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;
    }
}

Vous pouvez le voir lorsque la classe d'outils DSHWechatApiUtil Lorsque le composant est initialisé, la méthode marquée de l'annotation @PostConstruct est appelée et la variable statique se voit attribuer une valeur.

La deuxième façon

Grâce à l'annotation @Value()

@L'annotation Value() n'injectera pas d'attributs dans des variables statiques. , alors nous devons trouver un moyen d'attribuer des valeurs lorsque ce composant est initialisé.

La première méthode est certainement possible. Écrivez d'abord une propriété, puis attribuez la valeur à la propriété via l'annotation @Value(), et enfin attribuez la valeur à la propriété statique via l'annotation @PostConstruct.

Ici, nous devons utiliser une autre méthode. La méthode ici consiste à attribuer des valeurs via la méthode set. Les attributs sont modifiés statiquement et la méthode get est également modifiée statiquement, mais la méthode set ne peut pas être modifiée statiquement. Utilisez l'annotation @Value() pour modifier la méthode set.

Comment Springboot lit les fichiers professionnels personnalisés et injecte des variables statiques

De cette façon, vous pouvez réussir votre injection.

La troisième voie

La troisième voie est similaire à la deuxième,

@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;
    }
}

Comme dans le code ci-dessus, définissez simplement la méthode set sur non statique, alors les propriétés statiques de cette classe de configuration peuvent être injectées avec succès.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer