springboot学习笔记系列(五)-2018年8月30日 18:07:52
这篇笔记主要针对上一篇笔记的内容做一下调整扩充,添加config类,读取springboot配置外的一些配置信息的方法.
上一篇中将个人公共配置信息添加到了application内,但是在idea下会报错,提示无法找到对应的键,因为application内的键都是springboot指定的,对于多余的键虽然运行时不会出错,但是一直提示有错误,确实不太好.
解决办法就是将个人的配置信息拿出,放到myconfig.properties内.
上一篇中的application内容如下:
#要启用的配置文件
spring.profiles.active=servertest,freemarker,thymeleaf,datasource,druid,mybatis
com.sammery.tang.title=沙漠渔溏
com.sammery.tang.startTime=2018年8月30日 14:09:20
com.sammery.tang.description=学习
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
按照现在的想法进一步拆分,可得到下面的结果:
application.properties:
#要启用的配置文件
spring.profiles.active=server8080,freemarker,thymeleaf,datasource,druid,mybatis
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
myconfig.properties:
com.sammery.tang.title=沙漠渔溏
com.sammery.tang.startTime=2018年8月30日 14:09:20
com.sammery.tang.description=${com.sammery.tang.title},学习的乐园,创建于${com.sammery.tang.startTime}.
这样为了读取配置文件中的键,需要配置java类来读取:
package com.sammery.tang.config;
import lombok.Getter;
import lombok.Setter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@Component
@Configuration
@PropertySource(value = "classpath:myconfig.properties")
@Setter @Getter
public class CommonConfig {
@Value("${com.sammery.tang.title}")
private String title;
@Value("${com.sammery.tang.startTime}")
private String startTime;
@Value("${com.sammery.tang.description}")
private String description;
}
这样就可以在需要的地方把config类加到需要的地方,来获取配置文件内的值.
比如这里:
@SpringBootApplication
@Slf4j
public class TangApplication implements CommandLineRunner {
@Autowired
private CommonConfig commonConfig;
public static void main(String[] args) {
SpringApplication.run(TangApplication.class, args);
}
public void run(String... args) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String startTime = "2018年8月28日 11:20:43";
log.info("系统启动完成!"+"--项目初建时间:"+ commonConfig.getStartTime() +"--当前时间:"+sdf.format(new Date()));
}
}