Spring Boot配置类实例讲解

  • application.properties
yaml 复制代码
spring.application.name=demo
app.config.upload-addr=baidu.com
app.config.app-key=1234
  • AppConfigProperties
java 复制代码
import lombok.Data;

@Data
public class AppConfigProperties {
    private String uploadAddr;
    private String appKey;
}
  • UploadComponent
java 复制代码
import lombok.Data;
import lombok.extern.slf4j.Slf4j;

@Data
@Slf4j
public class UploadComponent {
    private AppConfigProperties appConfigProperties;
    public void upload(){
        log.info("app.config:{}",appConfigProperties);
    }
}
  • AppConfiguration
java 复制代码
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class AppConfiguration {

    //使用 @Value 注解注入配置文件中的spring.application.name属性的值到appName字段
    @Value("${spring.application.name}")
    public String appName;

    //定义一个Bean,RestTemplate的实例将会被Spring管理,BeanID=restTemplate
    @Bean
    public RestTemplate restTemplate() {return new RestTemplate();}

    //定义一个Bean,AppConfigProperties的实例将会被Spring管理
    //使用@ConfigurationProperties注解,将配置文件中以"app.config"为前缀的配置项自动绑定到AppConfigProperties
    @Bean
    @ConfigurationProperties(prefix = "app.config")
    public AppConfigProperties appConfigProperties() {return new AppConfigProperties();}

    @Bean
    public AppConfigProperties appConfigPropertiesNon() {return new AppConfigProperties();}

    //定义一个Bean UploadComponent的实例会被Spring管理
    //通过@Qualifier注解指定注入的appConfigProperties Bean的名称
    //确保注入的是我们刚刚定义的appConfigProperties Bean
    //在UploadComponent实例被创建后
    //设置其AppConfigProperties属性为我们注入的AppConfigProperties实例
    @Bean
    public UploadComponent uploadComponent(@Qualifier("appConfigProperties") AppConfigProperties properties) {
        UploadComponent uploadComponent = new UploadComponent();
        uploadComponent.setAppConfigProperties(properties);
        return uploadComponent;
    }
}
  • UploadController
java 复制代码
import com.example.demo.config.UploadComponent;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import javax.annotation.Resource;

@RestController
public class UploadController {
    @Resource
    private RestTemplate restTemplate;
    @Resource
    private UploadComponent uploadComponent;

    @GetMapping("/uploader")
    public void upload() {uploadComponent.upload();}
}
相关推荐
刃神太酷啦1 分钟前
C++ 多态详解:从概念到实现原理----《Hello C++ Wrold!》(14)--(C/C++)
java·c语言·c++·qt·算法·leetcode·面试
wjm04100626 分钟前
C++后端面试八股文
java·c++·面试
都叫我大帅哥26 分钟前
📉 MySQL索引罢工事件簿:揭秘失效原因与优化起义方案
java·mysql
Seven9734 分钟前
剑指offer-11、⼆进制中1的个数
java
you秀1 小时前
K8S中的dns要如何指定??给pod中增加hosts映射,来规避dns冲突问题
java·容器·kubernetes
Code季风1 小时前
深度优化 spring 性能:从缓存、延迟加载到并发控制的实战指南
java·spring boot·后端·spring·缓存·性能优化
风象南2 小时前
SpringBoot自定义RestTemplate的拦截器链
java·spring boot·后端
NCHUtianlin2 小时前
JAVA生成PDF(itextpdf)
java·开发语言·pdf
yiridancan2 小时前
终极剖析HashMap:数据结构、哈希冲突与解决方案全解
java·数据结构·算法·哈希算法