在SpringBoot中,可以使用@ConfigurationProperties注解来读取自定义properties,然后将其注入到bean中。
具体步骤如下:
- 定义自定义properties文件,在application.properties中定义的属性值,是可以被@ConfigurationProperties读取到的。可以在application.properties文件中添加自定义属性,如:
my.config.name=hello
my.config.age=18
- 创建一个@ConfigurationProperties注解的类,用于接收自定义属性值。
@ConfigurationProperties(prefix = "my.config")
public class MyConfig {
private String name;
private int age;
// getter、setter方法省略
}
在上面的代码中,@ConfigurationProperties(prefix = "my.config")指定了自定义属性的前缀为“my.config”,这个前缀必须和application.properties中前缀相同。
- 创建一个@Configuration注解的配置类,并将MyConfig类注入到容器中。
@Configuration
public class MyConfigConfig {
@Bean
@ConfigurationProperties(prefix = "my.config")
public MyConfig myConfig() {
return new MyConfig();
}
}
上面的配置类利用@Bean注解将MyConfig注入到Spring容器中,并且使用@ConfigurationProperties注解指定读取属性文件的前缀为“my.config”。这样就会自动将属性文件的值注入到MyConfig类中。
- 在其他类中使用MyConfig类
@Component
public class MyService {
@Autowired
private MyConfig myConfig;
// 访问myConfig的属性值
public void printConfig() {
System.out.println("name:" + myConfig.getName() + ",age:" + myConfig.getAge());
}
}
上面的代码中,使用@Autowired注解将MyConfig类注入到MyService中,然后就可以通过myConfig访问到自定义属性的值了。
示例一:读取redis相关的属性
spring.redis.host=127.0.0.1
spring.redis.port=6379
@Configuration
@ConfigurationProperties(prefix = "spring.redis")
@Component
public class RedisConfig {
private String host;
private int port;
// getter、setter省略
}
示例二:读取自定义的Kafka属性
kafka.bootstrap.servers=127.0.0.1:9092
kafka.topic=myTopic
@Configuration
@ConfigurationProperties(prefix = "kafka")
@Component
public class KafkaConfig {
private String bootstrapServers;
private String topic;
// getter、setter省略
}
需要注意的是,为了读取自定义的properties文件内容,需要在application.properties中指定扫描自定义properties文件的路径,如:
spring.config.location=classpath:/custom.properties
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot如何读取自定义properties并注入到bean中 - Python技术站