Springboot 사용자 정의 pro 파일 읽 기 정적 변수 주입 방식
8845 단어 Springbootprostatic정적 변수
mailConfig.properties
#
mail.host=smtp.qq.com
#
mail.port=587
#
[email protected]
#
mail.passWord=vxbkycyjkceocbdc
#
mail.timeout=25000
#
[email protected]
#
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 방법 을 수식 합 니 다.
이렇게 하면 성공 적 으로 주입 할 수 있다.
세 번 째 방식
세 번 째 방식 과 두 번 째 방식 은 차이 가 많 지 않다.
@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 방법 을 비정 상 으로 설정 하면 이 설정 류 의 정적 속성 은 성공 적 으로 주입 할 수 있 습 니 다.이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.