springboot学习笔记系列(五)-2018年8月30日 18:07:52

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()));
    }
}

猜你喜欢

转载自blog.csdn.net/forose/article/details/82226519
今日推荐