spring的配置文件在项目中占有举足轻重的位置。了解和合理地使用spring配置文件将会助力我们更好更快地开发项目,设计出优秀的程序。特开此文,持续更新日常使用中用到的常见配置。
话不多说,开始:
1.配置文件中自定义变量
使用下面的方法配置参数,这里就不区分properties还是yml的格式了。
init:
SYSTEM_NAME: xxxxxx
UPLOAD_INTERVAL_HB: 10
UPLOAD_INTERVAL_FJ: 15
然后怎样在程序里读取呢?——配合spring标签
1.@Value标签配合@Configuration,一开始踩了坑由于没有加@Configuration怎么都读不到配置文件里的参数进行赋值,当仅使用@Value标签并且想赋参给static变量时会出现赋值不上去显示null的情况。
@Configuration
public class Jsondata {
@Value("${init.system-name}")
public static String SYSTEM_NAME;
@Value("${init.FJ-upload-interval}")
public static int UPLOAD_INTERVAL_FJ;
@Value("${init.HB-upload-interval}")
public static int UPLOAD_INTERVAL_HB;
}
2.@Component和@ConfigurationProperties(prefix = "init")以及 set/get方法。这种方式不需要在变量名头顶上加@Value标签了,但是这里也有容易出错的地方,在于prefix = "init"前缀要加,还有如果不给属性设置set/get方法也是无法赋值上的。
@Component
//@Validate 属性可以在项目启动时校检
@ConfigurationProperties(prefix = "init") //ignoreInvalidFields = false 未绑定上则启动失败
public class Jsondata {
public static String SYSTEM_NAME;
public static int UPLOAD_INTERVAL_FJ;
public static int UPLOAD_INTERVAL_HB;
public static String getSystemName() {
return SYSTEM_NAME;
}
public static void setSystemName(String systemName) {
SYSTEM_NAME = systemName;
}
public static int getUploadIntervalFj() {
return UPLOAD_INTERVAL_FJ;
}
public static void setUploadIntervalFj(int uploadIntervalFj) {
UPLOAD_INTERVAL_FJ = uploadIntervalFj;
}
public static int getUploadIntervalHb() {
return UPLOAD_INTERVAL_HB;
}
public static void setUploadIntervalHb(int uploadIntervalHb) {
UPLOAD_INTERVAL_HB = uploadIntervalHb;
}