好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

Springboot 读取pro文件注入static静态变量

mailConfig.properties

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

#服务器

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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

/*

  * @(#)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组件初始化生命周期进行属性(对象)赋值

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

@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方法。

这样就能成功注入。

第三种方式

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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

原文链接:https://blog.csdn.net/u011429743/article/details/100732255

查看更多关于Springboot 读取自定义pro文件注入static静态变量方式的详细内容...

  阅读:19次