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

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

 更新時(shí)間:2025年12月03日 12:12:21   作者:悟能不能悟  
本文介紹了在SpringBoot的Controller中獲取application.yml配置值的四種方式,并舉例說(shuō)明了每種方式的使用場(chǎng)景和優(yōu)缺點(diǎn),結(jié)合實(shí)例代碼給大家介紹的非常詳細(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

對(duì)應(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ū)別和選擇建議

方式

適用場(chǎng)景

優(yōu)點(diǎn)

缺點(diǎn)

@Value

簡(jiǎn)單的單個(gè)配置項(xiàng)

簡(jiǎn)單直接

配置分散,不易管理

@ConfigurationProperties

復(fù)雜的配置組

類型安全,集中管理

需要?jiǎng)?chuàng)建配置類

Environment

動(dòng)態(tài)獲取配置

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

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

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

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

相關(guān)文章

最新評(píng)論

南木林县| 松滋市| 威海市| 长丰县| 深圳市| 延长县| 荥经县| 蒙阴县| 麻阳| 陆良县| 泰安市| 东平县| 江北区| 英超| 黎川县| 陆川县| 崇礼县| 潮州市| 北京市| 克什克腾旗| 额敏县| 河北区| 朝阳市| 慈溪市| 佛山市| 富裕县| 宁德市| 芜湖县| 金堂县| 威信县| 赫章县| 雅江县| 阳信县| 云梦县| 临澧县| 即墨市| 长海县| 和静县| 修武县| 盐山县| 德钦县|