最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot的controller中如何獲取applicatim.yml的配置值

 更新時間:2025年12月03日 12:12:21   作者:悟能不能悟  
本文介紹了在SpringBoot的Controller中獲取application.yml配置值的四種方式,并舉例說明了每種方式的使用場景和優(yōu)缺點,結(jié)合實例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧

在Spring Boot的Controller中獲取application.yml配置值,主要有以下幾種方式:

1. 使用@Value注解(最常用)

application.yml 配置

app:
  name: "我的應(yīng)用"
  version: "1.0.0"
  max-users: 100
  enabled: true
  timeout: 30000

Controller 中使用

@RestController
@RequestMapping("/api")
public class ConfigController {
    @Value("${app.name}")
    private String appName;
    @Value("${app.version}")
    private String appVersion;
    @Value("${app.max-users}")
    private int maxUsers;
    @Value("${app.enabled}")
    private boolean enabled;
    @Value("${app.timeout}")
    private long timeout;
    @GetMapping("/config")
    public Map<String, Object> getConfig() {
        Map<String, Object> config = new HashMap<>();
        config.put("name", appName);
        config.put("version", appVersion);
        config.put("maxUsers", maxUsers);
        config.put("enabled", enabled);
        config.put("timeout", timeout);
        return config;
    }
}

2. 使用@ConfigurationProperties(推薦用于復(fù)雜配置)

創(chuàng)建配置類

@Configuration
@ConfigurationProperties(prefix = "app")
@Data
public class AppConfig {
    private String name;
    private String version;
    private int maxUsers;
    private boolean enabled;
    private long timeout;
    private List<String> whitelist;
    private Map<String, String> endpoints;
}

在Controller中注入使用

@RestController
@RequestMapping("/api")
public class ConfigController {
    @Autowired
    private AppConfig appConfig;
    @GetMapping("/config")
    public AppConfig getConfig() {
        return appConfig;
    }
    @GetMapping("/info")
    public String getAppInfo() {
        return appConfig.getName() + " v" + appConfig.getVersion();
    }
}

3. 使用Environment接口

@RestController
@RequestMapping("/api")
public class ConfigController {
    @Autowired
    private Environment environment;
    @GetMapping("/env-config")
    public Map<String, Object> getEnvConfig() {
        Map<String, Object> config = new HashMap<>();
        config.put("name", environment.getProperty("app.name"));
        config.put("version", environment.getProperty("app.version"));
        config.put("maxUsers", environment.getProperty("app.max-users", Integer.class));
        config.put("timeout", environment.getProperty("app.timeout", Long.class, 5000L));
        return config;
    }
}

4. 復(fù)雜配置示例

application.yml

app:
  name: "用戶管理系統(tǒng)"
  version: "2.1.0"
  database:
    url: "jdbc:mysql://localhost:3306/mydb"
    username: "admin"
    pool-size: 20
  security:
    jwt-secret: "my-secret-key"
    token-expire: 3600
    cors-origins:
      - "http://localhost:3000"
      - "https://example.com"
  features:
    enable-cache: true
    enable-notification: false

對應(yīng)的配置類

@Configuration
@ConfigurationProperties(prefix = "app")
@Data
public class AppConfig {
    private String name;
    private String version;
    private DatabaseConfig database;
    private SecurityConfig security;
    private FeaturesConfig features;
    @Data
    public static class DatabaseConfig {
        private String url;
        private String username;
        private int poolSize;
    }
    @Data
    public static class SecurityConfig {
        private String jwtSecret;
        private int tokenExpire;
        private List<String> corsOrigins;
    }
    @Data
    public static class FeaturesConfig {
        private boolean enableCache;
        private boolean enableNotification;
    }
}

Controller中使用

@RestController
@RequestMapping("/api")
public class SystemController {
    @Autowired
    private AppConfig appConfig;
    @GetMapping("/system-info")
    public Map<String, Object> getSystemInfo() {
        return Map.of(
            "appName", appConfig.getName(),
            "databaseUrl", appConfig.getDatabase().getUrl(),
            "corsOrigins", appConfig.getSecurity().getCorsOrigins(),
            "enableCache", appConfig.getFeatures().isEnableCache()
        );
    }
}

5. 帶默認(rèn)值的配置

@RestController
@RequestMapping("/api")
public class ConfigController {
    // 使用默認(rèn)值
    @Value("${app.unknown-property:default-value}")
    private String unknownProperty;
    @Value("${app.retry-count:3}")
    private int retryCount;
    @GetMapping("/default-values")
    public Map<String, Object> getWithDefaults() {
        return Map.of(
            "unknownProperty", unknownProperty,
            "retryCount", retryCount
        );
    }
}

主要區(qū)別和選擇建議

方式

適用場景

優(yōu)點

缺點

@Value

簡單的單個配置項

簡單直接

配置分散,不易管理

@ConfigurationProperties

復(fù)雜的配置組

類型安全,集中管理

需要創(chuàng)建配置類

Environment

動態(tài)獲取配置

靈活,可動態(tài)獲取

類型轉(zhuǎn)換需要手動處理

推薦使用 @ConfigurationProperties,特別是當(dāng)配置項較多或有關(guān)聯(lián)時,這樣代碼更清晰、易于維護。

到此這篇關(guān)于springboot的controller中如何獲取applicatim.yml的配置值的文章就介紹到這了,更多相關(guān)springboot controller applicatim.yml配置值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

淮阳县| 北碚区| 新巴尔虎左旗| 澄城县| 河津市| 涿州市| 桦川县| 武义县| 大庆市| 文化| 手游| 大邑县| 奉贤区| 南投市| 那坡县| 嘉定区| 丰原市| 嵩明县| 婺源县| 巴马| 电白县| 普宁市| 黄浦区| 沙雅县| 临沂市| 错那县| 阳新县| 平凉市| 莲花县| 麻江县| 彭泽县| 大足县| 合水县| 外汇| 建昌县| 小金县| 方山县| 安溪县| 潮州市| 德保县| 仁寿县|