• springboot热部署之配置文件自动映射到属性和实体类(三)


    1配置文件加载

    不废话,上代码

    首先现在pom.xml中添加Maven的jar

    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
    </dependency>

      1.1在controller中添加注解@PropertySource("classpath:application.properties"),然后将filePath中的静态声明去掉,并且添加注解@Value("${web.file.path}"

    注意:@PropertySource("classpath:application.properties")中的application可以自定义,如果自定义的时候没有,那么需要新建

              @Value("${web.file.path}"中的web.file.path也可以自定义

     1.2在application.properties中添加配置文件web.file.path,这是文件注入路径

     1.3注意,新建的项目web.file.path找不到,可以点击黄色感叹号,让它生成additional-spring-configuration-metadata.json

     1.4 run  application ,之后找到application.properties中的web.file.path,可以看见上传的文件

     2实体类配置文件

    不废话,上代码

    2.1目录结构

    2.2新建ServiceSetting

    package com.example.demo.domian;

    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.context.annotation.PropertySource;
    import org.springframework.stereotype.Component;

    /**
    * 服务器的名称
    * @author Administrator
    * @Component 会对主键进行扫描
    * @PropertySource 注解指定配置文件的位置
    * @ConfigurationProperties 指定配置文件的属性
    * @ConfigurationProperties(prefix="test") 将注解中的共同属性test抽离出来,可以不用@ConfigurationProperties了
    *
    */
    @Component
    @PropertySource(value = { "classpath:application.properties" })
    //@ConfigurationProperties
    @ConfigurationProperties(prefix="test")
    public class ServiceSetting {
    /**
    * 名称
    * 如果ServiceSetting使用注解@ConfigurationProperties(prefix="test"),那么需要注解@Value("${test.name}");
    * 如果ServiceSetting不使用注解@ConfigurationProperties(prefix="test"),那么不需要注解@Value("${test.name}")
    */
    //@Value("${test.name}")
    private String name;
    /**
    * 访问接口地址
    * 如果ServiceSetting使用注解@ConfigurationProperties(prefix="test"),那么需要注解@Value("${test.domain}");
    * 如果ServiceSetting不使用注解@ConfigurationProperties(prefix="test"),那么不需要注解@Value("${test.domain}")
    *
    */
    //@Value("${test.domain}")
    private String domain;
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    public String getDomain() {
    return domain;
    }
    public void setDomain(String domain) {
    this.domain = domain;
    }



    }

    2.3新建TestController,

    package com.example.demo.controller;

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;

    import com.example.demo.domian.ServiceSetting;

    @RestController
    public class TestController {

    @Autowired
    private ServiceSetting serviceSetting;

    @GetMapping("/v1/test_properties")
    public Object testProperties() {

    return serviceSetting;
    }


    }

    2.4修改application.properties的配置文件

     

    web.upload-path=G:study_toolmaven_workspaceimages
    #静态资源文件
    spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,classpath:/test/,file:${web.upload-path}
    #指定某些文件不进行监听,即不进行热加载
    #spring.devtools.restart.exclude=application.properties
    #通过触发器的形式,来控制什么时候进行热部署新的文件
    spring.devtools.restart.trigger-file=trigger.txt
    #配置文件的端口号
    server.port=8080
    #配置图片注入的路径
    web.file.path=G:\study_tool\maven_workspace\images\
    #测试服务器的访问名称
    test.name=jimao
    #测试服务器的访问地址
    test.domain=liming

    2.5run application ,通过地址访问:local:host:8080//v1/test_properties,即可得到结果

  • 相关阅读:
    电脑桌面图标不显示图案变成白色图标该怎么办?
    行动上的巨人养成指南
    荣耀MagicBook Pro 2020款对比2019款做了哪些升级
    P8 function template ,函数模板
    MATLAB中imfill()函数
    MagicBook Pro 2020锐龙版
    P7. class template, 类模板,模板类
    6. namespace经验谈
    macbook pro2020参数
    MATLAB取整
  • 原文地址:https://www.cnblogs.com/zhushilai/p/13529707.html
Copyright © 2020-2023  润新知