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();}
}
相关推荐
Winn~7 分钟前
JVM垃圾回收器-ZGC
java·jvm·算法
程序员小假27 分钟前
说一说 SpringBoot 中 CommandLineRunner
java·后端
sky_ph36 分钟前
JAVA-GC浅析(一)
java·后端
爱coding的橙子37 分钟前
每日算法刷题Day24 6.6:leetcode二分答案2道题,用时1h(下次计时20min没写出来直接看题解,节省时间)
java·算法·leetcode
岁忧42 分钟前
(nice!!!)(LeetCode每日一题)2434. 使用机器人打印字典序最小的字符串(贪心+栈)
java·c++·算法·leetcode·职场和发展·go
天天摸鱼的java工程师1 小时前
@Autowired 注入失效?
java·后端
sss191s1 小时前
校招 Java 面试基础题目解析学习指南含新技术实操要点
java·python·面试
编程毕设1 小时前
【含文档+PPT+源码】基于微信小程序的旅游论坛系统的设计与实现
java·tomcat·旅游
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ1 小时前
saveOrUpdate 有个缺点,不会把值赋值为null,解决办法
java·开发语言
bytebeats1 小时前
Java 21 虚拟线程 - 兄嘚, 我的锁呢?
java