前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【SpringBoot教程】 最佳实践之SpringBoot.2.X核心配置文件详解

【SpringBoot教程】 最佳实践之SpringBoot.2.X核心配置文件详解

作者头像
大数据小禅
发布2023-04-03 09:08:10
3950
发布2023-04-03 09:08:10
举报
文章被收录于专栏:YO大数据YO大数据
在这里插入图片描述
在这里插入图片描述
常见的配置文件格式
代码语言:javascript
复制
xml、properties、json、yaml

Springboot里面常用xx.yml

  • YAML(Yet Another Markup Language)
  • 写 YAML 要比写 XML 快得多(无需关注标签或引号) 使用空格 Space 缩进表示分层,不同层次之间的缩进可以使用不同的空格数目
  • 注意:key后面的冒号,后面一定要跟一个空格,树状结构 !!一定要加空格,对应的类配置对齐 坑比较多
代码语言:javascript
复制
server:
  port: 8080  //设置启动端口号为8080
  
house:
  family:
    name: Doe
    parents:
      - John
      - Jane
    children:
      - Paul
      - Mark
      - Simone
  address:
    number: 34
    street: Main Street
    city: Nowheretown
    zipcode: 12345

Springboot里面常用 xx.properties

  • Key=Value格式
  • 语法简单,不容易出错
代码语言:javascript
复制
server.port=8082

#session失效时间,30m表示30分钟
server.servlet.session.timeout=30m

# Maximum number of connections that the server accepts and processes at any given time.
server.tomcat.max-connections=10000 

# Maximum size of the HTTP post content.
server.tomcat.max-http-post-size=2MB 
server.tomcat.max-http-form-post-size=2MB


# Maximum amount of worker threads
server.tomcat.max-threads=200 

官方文档配置

  • https://docs.spring.io/spring-boot/docs/2.3.0.BUILD-SNAPSHOT/reference/htmlsingle/#core-properties
  • 如果需要修改,直接复制对应的配置文件加到application.properties里面,一般不需要调整
SpringBoot注解配置文件映射属性和实体类实战
  • 配置文件加载
    • 方式一
  • 1、Controller上面配置 @PropertySource({“classpath:resource.properties”})
    • 2、增加属性 @Value(“${test.name}”) private String name;

在resources创建配置文件pay.properties 配置文件

代码语言:javascript
复制
  #有一些配置是不可以写死的,所有需要写道配置文件引入
#微信支付appid
  wxpay.appid=w12324
#支付密钥
  wxpay.sercret=asdasdasd
#微信支付商户号
  wxpay.mechid=123123

控制类测试:

代码语言:javascript
复制
//测试配置问文件
@RestController
@RequestMapping("api/v1/test")
@PropertySource({"classpath:pay.properties"})
public class TestController {
    @Value("${wxpay.appid}")
    private String payAppid;

    @Value("${wxpay.appid}")
    private String paySecret;

    @GetMapping("get_config")
    public JsonData testConfig(){
        Map<String,String> map=new HashMap<>();
        map.put("appid",payAppid);
        map.put("secret",paySecret);

        return JsonData.buildSuccess(map);
    }
}

测试:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i75DbsuC-1680418980665)(picture/image-20210412220116775.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i75DbsuC-1680418980665)(picture/image-20210412220116775.png)]
  • 方式二:实体类配置文件 //可以注入单个也可以注入配置类
    • 1、添加 @Component 注解;
    • 2、使用 @PropertySource 注解指定配置文件位置;
    • 3、使用 @ConfigurationProperties 注解,设置相关属性;
    • 4、必须 通过注入IOC对象Resource 进来 , 才能在类中使用获取的配置文件值。 @Autowired private ServerSettings serverSettings;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DNDCdt1p-1680418980666)(picture/image-20210412221715924.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DNDCdt1p-1680418980666)(picture/image-20210412221715924.png)]

配置文件:

代码语言:javascript
复制
#有一些配置是不可以写死的,所有需要写道配置文件引入
#微信支付appid
wxpay.appid=w12324
#支付密钥
wxpay.sercret=asdasdasd
#微信支付商户号
wxpay.mechid=123123

控制类测试:

代码语言:javascript
复制
//测试配置问文件
@RestController
@RequestMapping("api/v1/test")
@PropertySource({"classpath:pay.properties"})
public class TestController {
    @Value("${wxpay.appid}")
    private String payAppid;

    @Value("${wxpay.appid}")
    private String paySecret;

    @Autowired  //讲配置测试类注解进来
    private WXConfig wxConfig;

    @GetMapping("get_config")
    public JsonData testConfig(){
//        Map<String,String> map=new HashMap<>();
//        map.put("appid",payAppid);
//        map.put("secret",paySecret);

        Map<String,String> map=new HashMap<>();
        map.put("appid",wxConfig.getPayAppid());
        map.put("Secret",wxConfig.getPaySecret());
        map.put("MechId",wxConfig.getPayMechId());


        return JsonData.buildSuccess(map);
    }
}

postMan测试:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ClPp3Hpq-1680418980666)(picture/image-20210412221827232.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ClPp3Hpq-1680418980666)(picture/image-20210412221827232.png)]
代码语言:javascript
复制
例子:
@Configuration
@ConfigurationProperties(prefix="test")
@PropertySource(value="classpath:resource.properties")
public class ServerConstant {

}

常见问题:

1、配置文件注入失败,Could not resolve placeholder
解决:根据springboot启动流程,会有自动扫描包没有扫描到相关注解, 
默认Spring框架实现会从声明@ComponentScan所在的类的package进行扫描,来自动注入,
因此启动类最好放在根路径下面,或者指定扫描包范围
spring-boot扫描启动类对应的目录和子目录


2、注入bean的方式,属性名称和配置文件里面的key一一对应,就用加@Value 这个注解
如果不一样,就要加@value("${XXX}")
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-04-02,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 常见的配置文件格式
  • SpringBoot注解配置文件映射属性和实体类实战
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档