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();}
}
相关推荐
NE_STOP11 小时前
Docker--Docker Swarm集群
java
两年半的个人练习生^_^11 小时前
JMM 进阶:彻底理解 CAS 实现原理
java·开发语言
wuminyu11 小时前
Java锁机制之park和unpark源码剖析
java·linux·c语言·jvm·c++
W_LuYi18512 小时前
手撸极简zkEVM验证器:RISC-V电路实践
java·risc-v
AI人工智能+电脑小能手12 小时前
【大白话说Java面试题 第102题】【并发篇】第2题:volatile 能否保证线程安全?
java·安全·面试
KobeSacre12 小时前
JUC 概述
java·开发语言
小bo波12 小时前
形式化方法 × UML
java·软件工程·uml·面向对象·形式化方法·tla+
就叫_这个吧13 小时前
IDEA中Javaweb项目创建+servlet,实现简单的信息录入获取
java·servlet·intellij-idea·web
程序员Jelena13 小时前
接口调用的代码实现:从入门到实战
java
代码钢琴师13 小时前
Throttle4j 快速上手教程
java