前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot开发过程中碰到的几个问题

SpringBoot开发过程中碰到的几个问题

作者头像
bisal
发布2021-09-06 15:51:36
5410
发布2021-09-06 15:51:36
举报
文章被收录于专栏:bisal的个人杂货铺

最近几天开发时碰到了一些SpringBoot的问题,不是难题,应该是常规知道的类型,记录一下,下次有经验了。

问题1

有时候在Eclipse新增.yml配置文件,显示的形式如下,不是正常.yml显示的字体颜色,

而且配置文件前的图标,不是绿色的

,只是个普通文件

,导致加载时,对配置无法识别。

为了解决这问题,可以在配置文件上右键-"Open With"-"Other"/(或者存在"Spring YAML Properties"),

选择这个"Spring YAML Properties",即可按照YAML的格式,进行显示,

问题2

如果在程序逻辑中需要读取一些配置文件的自定义的数据,应该如何调用?

假设我们在程序中需要读取.yml配置文件中excel.path的值,

首先需要定义一个实体类,有几点注意的,

(1) 加上@Configuration,启动时加载。

(2) 加上@ConfigurationProperties,并指定prefix的值为excel。

(3) 实体类中的变量定义为static,get方法需要定义static,但是不要定义set方法为static,因为@ConfigurationProperties只会调用非静态的set方法。

代码语言:javascript
复制
@Configuration
@ConfigurationProperties(prefix = "excel")
public class ExcelProperties {
  
  private static String path;
  
  public static String getPath() {
    return path;
  }


  public void setPath(String path) {
    ExcelProperties.path = path;
  }
}

其次,调用的时候,在定义为@Component的类直接使用"实体类.get的方法"即可得到取值,如下所示,ExcelProperties.getPath(),

代码语言:javascript
复制
@Component
public class ConfigUtil {
  
  public String getExcelName(String jdbcName, String schemaName) {
    return ExcelProperties.getPath() + File.separator + Constants.EXCEL_FILE_NAME;
  }
}

问题3

如果在.yml配置文件中存在特殊字符,应该如何处理?

如下所示,excel.path的值是D:,

代码语言:javascript
复制
excel:
  path: D:

但是这个":"在此处认为是个非法字符,

可以通过增加单引号/双引号,使其正规,

代码语言:javascript
复制
excel:
  path: 'D:'  (path: /"D:")

问题4

能做到.yml配置文件按照环境隔开的效果?

我们有开发和生产两个环境,对应的配置可能都是不同的,可以在主配置文件中设置一些通用的配置,然后在spring.profiles.active中指定当前的环境名称,dev代表开发环境,

代码语言:javascript
复制
spring:
  profiles:
    active: dev


mybatis:
  mapper-locations: classpath:mapping/*.xml
  type-aliases-package: com.entity


logging:
  config: classpath:log4j.properties
  level:
    root: INFO

相应地创建application-dev.yml,其中内容就是开发环境相关的,例如数据库、文件路径等,

代码语言:javascript
复制
spring:
  datasource:
    username: poirot
    password: poirot
    url: jdbc:mysql://x.x.x.x:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false
    driver-class-name: com.mysql.cj.jdbc.Driver


excel:
  path: 'D:'

通过拆开配置文件就可以针对不同的环境设置不同的配置信息,同时还可以避免不同环境的配置信息揉在一个配置文件中,或者当程序部署在不同环境时,还得手工改这个配置文件,增加了系统配置的灵活性。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/06/17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档