springboot yml配置文件值的注入方式是什么(springboot,yml,开发技术)

时间:2024-05-09 06:09:02 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

yml配置文件值注入

搭建项目

参考 IDEA快速搭建spring-boot项目(Spring initializr)

pom.xml

创建项目后,还需在pom.xml中的<dependencies>标签添加该依赖。

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional></dependency>

创建实体类

packagecom.demo.demo;importorg.springframework.boot.context.properties.ConfigurationProperties;importorg.springframework.stereotype.Component;@Component@ConfigurationProperties(prefix="person")publicclassPerson{privateStringname;privateintage;@OverridepublicStringtoString(){return"person{"+"name='"+name+'\''+",age="+age+'}';}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicintgetAge(){returnage;}publicvoidsetAge(intage){this.age=age;}}

spring boot核心配置文件application.yml

1.将application.properties文件后缀改为.yml,内容为:

server:port:8080person:name:小狗age:21

测试类

packagecom.demo.demo;importcom.demo.demo.Person;importorg.junit.Test;importorg.junit.runner.RunWith;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.boot.test.context.SpringBootTest;importorg.springframework.test.context.junit4.SpringRunner;@RunWith(SpringRunner.class)@SpringBootTestpublicclassDemoApplicationTests{@AutowiredPersonperson=newPerson();@TestpublicvoidcontextLoads(){System.out.println(person);}}

运行

springboot yml配置文件值的注入方式是什么

结果:

springboot yml配置文件值的注入方式是什么

自动注入yml文件和properties文件

在springboot中,如果需要使用到配置文件中的数据,自动注入即可,非常方便,但是在使用yml中的属性时,自动注入却失效了? 发现,如果是properties文件,直接注入即可,但是yml需要增加一个配置

yml文件的自动注入class

yml文件相对于properties较整洁和简便,在自动注入的使用需要增加配置

增加pom依赖

<!--*.ymlautoinjectconfig--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency>

增加配置类

publicclassYamlPropertyLoaderFactoryextendsDefaultPropertySourceFactory{@OverridepublicPropertySource<?>createPropertySource(Stringname,EncodedResourceresource)throwsIOException{if(null==resource){super.createPropertySource(name,resource);}returnnewYamlPropertySourceLoader().load(resource.getResource().getFilename(),resource.getResource(),null);}}

注入指定yml配置文件到实体类中

/***在需要注入的class类上加上这3个注解即可*/@Configuration@PropertySource(value="classpath:application-quartz.yml",factory=YamlPropertyLoaderFactory.class)@ConfigurationProperties(prefix="quartz")publicclassJobTime{privateStringarticleCarwler;privateStringearthlySweetSentenceApi;privateStringrainbowFartApi;privateStringqqRobotMsgTimer;}

说明:

@PropertySource(value="classpath:application-quartz.yml",factory=YamlPropertyLoaderFactory.class)

这个注解表示注入哪个配置文件,指定第二步中的配置类

@ConfigurationProperties(prefix="quartz")

表示指定配置文件中的属性是什么前缀,可忽略,例如:quartz.articleCarwler=0 0/5 * * * ?

Properties配置文件自动注入

properties类型的配置文件就比较简单,不需要增加上面的依赖和配置,直接指定注入即可

直接注入属性到class

@Configuration@PropertySource("classpath:/application.properties")@ConfigurationProperties(prefix="quartz")publicclassJobTime{privateStringtask1;privateStringtask2;}

说明:

@PropertySource("classpath:/application.properties")

指定配置文件名称

@ConfigurationProperties(prefix="quartz")

指定配置文件中的key的前缀,可忽略此注解, 例如:quartz.task1=0 3 * * * ?

代码中直接注入

如果是在代码中使用单独的属性,不需要将属性都注入到class中,那么可直接使用注解注入到变量中,在代码中直接使用

无论是yml还是properties都可以直接注入,不需要其他配置

使用注解:@Value("${key}") 就可以直接注入。

例如:

@Value("${quartz.taks1}")privateStringtaks1;

springboot是什么

springboot一种全新的编程规范,其设计目的是用来简化新Spring应用的初始搭建以及开发过程,SpringBoot也是一个服务于框架的框架,服务范围是简化配置文件。

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:springboot yml配置文件值的注入方式是什么的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:17条提高工作效率的Python技巧分别是什么下一篇:

12 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18