掌握Spring Boot:从application.yml提取配置属性(方法1)

版权申诉
5星 · 超过95%的资源 1 下载量 145 浏览量 更新于2024-10-31 收藏 97KB ZIP 举报
在Spring Boot框架中,配置文件通常用于定义应用程序中各个组件的配置属性,这些属性可以控制应用程序的行为。在Spring Boot的配置文件中,application.yml是一个常用的配置文件,它以YAML格式存储属性。YAML格式具有易读和易写的特点,非常适合用于配置文件。Spring Boot应用通常会优先读取application.yml文件,这使得它成为定义默认配置的理想选择。 要获取application.yml配置文件中的属性,可以通过以下方法: 1. 使用@Value注解注入单个属性 在Spring中,可以通过@Value注解来获取配置文件中的属性值。这个注解可以加在类的属性上,也可以加在方法参数上。使用@Value时,可以使用SpEL表达式来引用配置文件中的属性值。 例如: ```java @RestController public class MyController { @Value("${app.name}") private String appName; @GetMapping("/name") public String getAppName() { return appName; } } ``` 在上面的例子中,`${app.name}`是在application.yml文件中定义的属性名称,其值将被注入到`appName`变量中。 2. 使用@ConfigurationProperties注解绑定配置文件中的属性到一个Bean @ConfigurationProperties允许你将一个外部配置文件中的属性绑定到一个Spring管理的Bean上。首先,需要在类上使用@ConfigurationProperties注解,并指定属性的前缀。然后,Spring Boot会自动将配置文件中带有该前缀的属性值注入到该Bean的对应属性中。 例如: ```java @Component @ConfigurationProperties(prefix = "app") public class AppConfig { private String name; private int version; // getters and setters } ``` 在application.yml中: ```yaml app: name: MyApplication version: 1.0.0 ``` 这样,`name`和`version`属性就会被自动注入到`AppConfig`类的实例中。 3. 使用Environment对象获取配置属性 Spring的Environment接口提供了访问环境属性的方法。你可以通过注入Environment对象来访问配置文件中的属性。 例如: ```java @RestController public class MyController { @Autowired private Environment env; @GetMapping("/appname") public String getAppName() { return env.getProperty("app.name"); } } ``` 在这个例子中,我们注入了Environment对象,并通过`getProperty`方法来获取名为`app.name`的属性值。 4. 使用CommandLineRunner或ApplicationRunner接口 如果你需要在应用程序启动时运行一些初始化代码,可以使用`CommandLineRunner`或`ApplicationRunner`接口。这两个接口都提供了一个`run`方法,在这个方法中可以通过`applicationContext.getEnvironment().getProperty`方法来获取属性值。 例如: ```java @Component public class AppStartupRunner implements CommandLineRunner { @Override public void run(String... args) throws Exception { ConfigurableEnvironment env = (ConfigurableEnvironment) applicationContext.getEnvironment(); String appName = env.getProperty("app.name"); System.out.println("Application Name: " + appName); } } ``` 以上就是通过方法1获取Spring Boot中application.yml配置文件的相关属性的几种常见方式。每种方式都适用于不同的场景,可以根据具体需求来选择合适的方法。

org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.karakal.cpzz.CpzzWebServicesApplication]; nested exception is org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'requestInterceptor' for bean class [com.karakal.cpzz.log.RequestInterceptor] conflicts with existing, non-compatible bean definition of same name and class [com.karakal.cpzz.interceptor.RequestInterceptor] at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:188) at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:331) at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:247) at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:311) at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:112) at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:756) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:572) at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:732) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:409) at org.springframework.boot.SpringApplication.run(SpringApplication.java:308) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1300) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1289) at co

2025-03-13 上传
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部