在 resources
下创建一个名为 application.yml
的配置文件,里面配置了不同的数据,内容如下
lesson: SpringBoot?server:port: 80?enterprise:name: itcastage: 16tel: 4006184000subject: - Java - 前端 - 大数据
3.2 读取配置数据3.2.1 使用 @Value注解使用 @Value("表达式")
注解可以从配合文件中读取数据,注解中用于读取属性名引用方式是:${一级属性名.二级属性名……}
我们可以在 BookController
中使用 @Value
注解读取配合文件数据,如下
@RestController@RequestMapping("/books")public class BookController { @Value("${lesson}") private String lesson; @Value("${server.port}") private Integer port; @Value("${enterprise.subject[0]}") private String subject_00;? @GetMapping("/{id}") public String getById(@PathVariable Integer id){ System.out.println(lesson); System.out.println(port); System.out.println(subject_00); return "hello , spring boot!"; }}
使用postman调接口
文章插图
可以看到结果已经返回
文章插图
3.2.2 Environment对象上面方式读取到的数据特别零散,
SpringBoot
还可以使用 @Autowired
注解注入 Environment
对象的方式读取数据 。这种方式 SpringBoot
会将配置文件中所有的数据封装到 Environment
对象中,如果需要使用哪个数据只需要通过调用 Environment
对象的 getProperty(String name)
方法获取 。具体代码如下:@RestController@RequestMapping("/books")public class BookController { @Autowired private Environment env; @GetMapping("/{id}") public String getById(@PathVariable Integer id){ System.out.println(env.getProperty("lesson")); System.out.println(env.getProperty("enterprise.name")); System.out.println(env.getProperty("enterprise.subject[0]")); return "hello , spring boot!"; }}
注意:这种方式,框架内容大量数据,框架使用的比较多,而在开发中我们很少使用 。3.2.3 自定义对象
SpringBoot
还提供了将配置文件中的数据封装到我们自定义的实体类对象中的方式 。具体操作如下:- 将实体类
bean
的创建交给Spring
管理 。
在类上添加@Component
注解
- 使用
@ConfigurationProperties
注解表示加载配置文件
在该注解中也可以使用prefix
属性指定只加载指定前缀的数据
- 在
BookController
中进行注入
Enterprise
实体类内容如下:@Component@ConfigurationProperties(prefix = "enterprise")public class Enterprise { private String name; private int age; private String tel; private String[] subject;? public String getName() { return name; }? public void setName(String name) { this.name = name; }? public int getAge() { return age; }? public void setAge(int age) { this.age = age; }? public String getTel() { return tel; }? public void setTel(String tel) { this.tel = tel; }? public String[] getSubject() { return subject; }? public void setSubject(String[] subject) { this.subject = subject; }? @Override public String toString() { return "Enterprise{" + "name='" + name + '\'' + ", age=" + age + ", tel='" + tel + '\'' + ", subject=" + Arrays.toString(subject) + '}'; }}
经验总结扩展阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 《Thinking In Java》作者:不要使用并发!
- aardio + Python 可视化快速开发桌面程序,一键生成独立 EXE
- Windows esp-idf 安装
- 建议收藏 Java线程同步的四种方式详解
- aardio + PHP 可视化快速开发独立 EXE 桌面程序
- 制造企业有可能自行开发ERP系统吗?
- 农村土地开发有哪些不允许的项目
- aardio + VBScript 混合开发
- 14 基于SqlSugar的开发框架循序渐进介绍-- 基于Vue3+TypeScript的全局对象的注入和使用
- 基于Qt Designer和PyQt5的桌面软件开发--环境搭建和入门例子