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();}
}
相关推荐
月明长歌2 小时前
【码道初阶】牛客TSINGK110:二叉树遍历(较难)如何根据“扩展先序遍历”构建二叉树?
java·数据结构·算法
Java水解2 小时前
【SpringBoot3】Spring Boot 3.0 集成 Mybatis Plus
spring boot·后端
用户2190326527353 小时前
Spring Boot + Redis 注解极简教程:5分钟搞定CRUD操作
java·后端
Alice3 小时前
linux scripts
java·linux·服务器
Filotimo_3 小时前
Spring Data JPA 方法名查询特性的使用
java·开发语言·windows
代码栈上的思考3 小时前
MyBatis:注解方式实现数据库 CRUD 全操作
java·开发语言·mybatis
哈哈老师啊3 小时前
Springboot校园订餐管理系统k2pr7(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
JIngJaneIL3 小时前
基于java+ vue学生选课系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot
百锦再3 小时前
京东云鼎入驻方案解读——通往协同的“高架桥”与“快速路”
android·java·python·rust·django·restful·京东云
WZTTMoon3 小时前
Apache Tomcat 体系结构深度解析
java·tomcat·apache