`
buddie
  • 浏览: 185327 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SpringBoot自定义YAML配置类

阅读更多

在开发SpringBoot应用程序中,可以使用yaml文件来配置各种属性及参数,并可以直接映射到Java类的属性当中。

比如,我有一个Java类 UserProperties.java

package cn.buddie.test.yaml;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * 用户配置
 */
public class UserProperties {
    /**
     * 名称
     */
    private String userName;
    /**
     * 性别
     */
    private int gender;

    // getter & setter
    public void setUserName(String userName) {
        this.userName = userName;
    }

    public void setGender(int gender) {
        this.gender = gender;
    }

    public String getUserName() {
        return userName;
    }

    public int getGender() {
        return gender;
    }
}

 

 我期望能在yaml文件中配置UserProperties中的属性,当我需要使用时,直接从UserProperties类中取就可以了。

 

只需要给UserProperties类中加入两个注解就可以了

 

@ConfigurationProperties("user")
@Component
public class UserProperties

 

 

其中@ConfigurationProperties表示这是一个注解类,"user":表示要解析yaml文件中user开头的配置

@Component表示要将此类做作一个组件,注册到Spring容器中,方便我们的后面通过自动注入来使用。

然后yaml配置文件中,对UserProperties中的属性通过配置就可以

application.yaml

user:
  user-name: 'zhangsan'
  gender: 2

在java类中属性userName,在yaml中,也可以写成‘user-name’,规则就是把大写字母为成'-'+对应的小写字母 

 

写一个测试类,测试一下

 

 

package cn.buddie.test.yaml;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.boot.test.context.SpringBootTest;

@RunWith(SpringRunner.class)
@SpringBootTest
public class YamlTest {

    @Autowired
    private UserProperties userProperties;

    @Test
    public void testYaml() {
        System.out.println(userProperties.getUserName() + "-" + userProperties.getGender());
    }
}

 

测试结果

zhangsan-2

 

需要注意的地方

1、需要依赖jar包:

compileOnly("org.springframework.boot:spring-boot-configuration-processor")

2、属性不能直接用'name',这样会取到系统环境中的'name'

3、被@ConfigurationProperties注解的配置类,不能为内部类

 

 

分享到:
评论

相关推荐

    springboot自定义自动装配.rar

    5. **属性绑定**:通过`@ConfigurationProperties`将YAML或properties文件中的配置属性绑定到一个Java对象上,方便在配置类中使用。 三、自定义属性配置 1. **`@ConfigurationProperties`**:这个注解用于将配置...

    springboot之yml配置文件信息加密.docx

    使用 @RunWith(SpringJUnit4ClassRunner.class) 和 @SpringBootTest(classes= TrustWebApplication.class) 注解来指定 Spring Boot 的启动类。使用 @Autowired 注解来注入 StringEncryptor 接口,使用 encryptPwd() ...

    redis-cluster结合springboot的使用自定义序列化

    以下是一个基本的YAML配置示例: ```yaml spring: data: redis: cluster: nodes: node1:6379,node2:6379,... # 集群节点地址,用逗号分隔 max-redirections: 5 # 允许的最大重定向次数 ``` 接下来,我们要...

    springboot集成redis集群,redis安装包配置

    现在,让我们创建一个Redis配置类,以便自定义连接池和其他设置: ```java @Configuration public class RedisConfig { @Value("${spring.redis.cluster.nodes}") private String clusterNodes; @Bean public...

    SpringBoot整合JDBC&Druid;数据源示例

    为了展示Druid的数据源监控页面,我们需要在SpringBoot的主启动类上添加`@EnableWebMvc`注解,然后创建一个配置类以暴露Druid的监控端点: ```java @Configuration @EnableWebMvc public class WebConfig ...

    spring boot装载自定义yml文件

    这样,Spring Boot就能识别并解析这些自定义YAML配置文件中的属性。 Spring Boot提供四种主要的事件监听器接口,分别是: 1. `ApplicationStartedEvent`:在Spring Boot应用启动后触发。 2. `...

    springboot-generator配置

    在深入了解SpringBoot Generator的配置之前,我们先来了解一下Spring Boot的基础。Spring Boot是基于Spring框架的一个快速开发工具,它简化了Spring应用的初始搭建以及开发过程。Spring Boot通过提供开箱即用的设置...

    springboot-configuration-test.zip

    在"springboot-configuration-test"项目中,我们可以看到如何创建自定义的配置类,以及如何利用这些条件注解来控制配置的加载。这有助于我们在特定场景下对SpringBoot默认行为进行微调,以适应项目的特殊需求。 ...

    使用了自定义springboot-starter组件的示例项目【study-springboot】

    - 编写自动配置类(如果需要),利用`@Configuration`和`@Conditional`注解,使组件能在满足特定条件时自动配置。 - 创建Bean,可以使用`@Component`、`@Service`、`@Repository`和`@Controller`注解,根据需要选择...

    springBoot Elasticsearch 配置 demo

    在测试环境中,可以使用`@LocalServerPort`和`@SpringBootTest`注解来启动一个临时的Elasticsearch实例,进行集成测试。 8. **性能优化**: 考虑到性能,可以配置Elasticsearch的刷新间隔、分片数和副本数等参数...

    Springboot读取配置文件及自定义配置文件的方法

    以下是对Spring Boot读取配置文件及自定义配置文件方法的详细解释。 1. **默认配置文件** Spring Boot默认使用`application.properties`或`application.yml`作为主配置文件。这两个文件位于`src/main/resources`...

    springboot 集成eureka 详细配置.docx

    在Spring Boot的主配置类(通常是`Application.java`)中,使用`@EnableEurekaServer`注解启动Eureka服务器: ```java import org.springframework.boot.SpringApplication; import org.springframework.boot....

    springboot

    默认提供了一定的安全设置,可通过配置文件或自定义安全配置类进行扩展。 10. **测试支持** SpringBoot提供了`SpringBootTest`注解用于集成测试,以及`@WebMvcTest`、`@DataJpaTest`等针对特定层的测试注解,方便...

    SpringBoot学习代码模拟SpringBoot框架底层原理源代码

    1. **源码结构**:可能包含`src/main/java`下的`com.bird.boot`或其他包,其中组织了SpringBoot的主配置类、启动器、自定义配置等。 2. **主配置类**:通常是一个带有`@SpringBootApplication`注解的类,该注解结合...

    springboot如何读取自定义配置项

    例如,我们可以创建一个配置类 `MyConfig`,并使用 `@ConfigurationProperties` 注解来指定配置的前缀。 ```java @Component @ConfigurationProperties(prefix = "project") @PropertySource(value = "classpath:...

    springboot+mongodb,使用自定义库demo

    ```yaml # application.yml 示例 spring: data: mongodb: uri: mongodb://username:password@localhost:27017/custom_db ``` 这里的`custom_db`就是我们要操作的非默认的数据库名称。 现在,我们需要创建一个...

    springboot3.2.3集成shardingsphere5.4.1及动态数据源demo项目

    在SpringBoot的配置类中,我们可以注册一个Bean,该Bean实现了DataSourceRouter接口,用于实现动态数据源的选择逻辑。 此外,ShardingSphere提供了一套强大的API和注解,使得在业务代码中进行数据分片操作变得简单...

    SpringBoot+tk.Mybatis整合+yml配置+logback配置

    - 在 SpringBoot 的主配置类中启用 tk.Mybatis 插件。 2. **YAML配置**: YAML 是一种易读的数据序列化格式,SpringBoot 默认支持 YAML 与 Properties 配置文件。相比 Properties,YAML 提供更清晰的层次结构。在...

Global site tag (gtag.js) - Google Analytics