在开发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注解的配置类,不能为内部类
相关推荐
5. **属性绑定**:通过`@ConfigurationProperties`将YAML或properties文件中的配置属性绑定到一个Java对象上,方便在配置类中使用。 三、自定义属性配置 1. **`@ConfigurationProperties`**:这个注解用于将配置...
使用 @RunWith(SpringJUnit4ClassRunner.class) 和 @SpringBootTest(classes= TrustWebApplication.class) 注解来指定 Spring Boot 的启动类。使用 @Autowired 注解来注入 StringEncryptor 接口,使用 encryptPwd() ...
以下是一个基本的YAML配置示例: ```yaml spring: data: redis: cluster: nodes: node1:6379,node2:6379,... # 集群节点地址,用逗号分隔 max-redirections: 5 # 允许的最大重定向次数 ``` 接下来,我们要...
现在,让我们创建一个Redis配置类,以便自定义连接池和其他设置: ```java @Configuration public class RedisConfig { @Value("${spring.redis.cluster.nodes}") private String clusterNodes; @Bean public...
为了展示Druid的数据源监控页面,我们需要在SpringBoot的主启动类上添加`@EnableWebMvc`注解,然后创建一个配置类以暴露Druid的监控端点: ```java @Configuration @EnableWebMvc public class WebConfig ...
这样,Spring Boot就能识别并解析这些自定义YAML配置文件中的属性。 Spring Boot提供四种主要的事件监听器接口,分别是: 1. `ApplicationStartedEvent`:在Spring Boot应用启动后触发。 2. `...
在深入了解SpringBoot Generator的配置之前,我们先来了解一下Spring Boot的基础。Spring Boot是基于Spring框架的一个快速开发工具,它简化了Spring应用的初始搭建以及开发过程。Spring Boot通过提供开箱即用的设置...
在"springboot-configuration-test"项目中,我们可以看到如何创建自定义的配置类,以及如何利用这些条件注解来控制配置的加载。这有助于我们在特定场景下对SpringBoot默认行为进行微调,以适应项目的特殊需求。 ...
- 编写自动配置类(如果需要),利用`@Configuration`和`@Conditional`注解,使组件能在满足特定条件时自动配置。 - 创建Bean,可以使用`@Component`、`@Service`、`@Repository`和`@Controller`注解,根据需要选择...
在测试环境中,可以使用`@LocalServerPort`和`@SpringBootTest`注解来启动一个临时的Elasticsearch实例,进行集成测试。 8. **性能优化**: 考虑到性能,可以配置Elasticsearch的刷新间隔、分片数和副本数等参数...
以下是对Spring Boot读取配置文件及自定义配置文件方法的详细解释。 1. **默认配置文件** Spring Boot默认使用`application.properties`或`application.yml`作为主配置文件。这两个文件位于`src/main/resources`...
在Spring Boot的主配置类(通常是`Application.java`)中,使用`@EnableEurekaServer`注解启动Eureka服务器: ```java import org.springframework.boot.SpringApplication; import org.springframework.boot....
默认提供了一定的安全设置,可通过配置文件或自定义安全配置类进行扩展。 10. **测试支持** SpringBoot提供了`SpringBootTest`注解用于集成测试,以及`@WebMvcTest`、`@DataJpaTest`等针对特定层的测试注解,方便...
1. **源码结构**:可能包含`src/main/java`下的`com.bird.boot`或其他包,其中组织了SpringBoot的主配置类、启动器、自定义配置等。 2. **主配置类**:通常是一个带有`@SpringBootApplication`注解的类,该注解结合...
例如,我们可以创建一个配置类 `MyConfig`,并使用 `@ConfigurationProperties` 注解来指定配置的前缀。 ```java @Component @ConfigurationProperties(prefix = "project") @PropertySource(value = "classpath:...
```yaml # application.yml 示例 spring: data: mongodb: uri: mongodb://username:password@localhost:27017/custom_db ``` 这里的`custom_db`就是我们要操作的非默认的数据库名称。 现在,我们需要创建一个...
在SpringBoot的配置类中,我们可以注册一个Bean,该Bean实现了DataSourceRouter接口,用于实现动态数据源的选择逻辑。 此外,ShardingSphere提供了一套强大的API和注解,使得在业务代码中进行数据分片操作变得简单...
- 在 SpringBoot 的主配置类中启用 tk.Mybatis 插件。 2. **YAML配置**: YAML 是一种易读的数据序列化格式,SpringBoot 默认支持 YAML 与 Properties 配置文件。相比 Properties,YAML 提供更清晰的层次结构。在...