在上一篇中介绍了在 idea 中创建 springboot 工程及使用 web 工程输出 "helloworld" 到前端页面, 本文学习在 springboot 工程中读取属性文件中的属性值.
一 自定义属性
在 application.properties 文件中添加属性配置项
myapp.name=helloworld
可以使用 @Value 注解来读取, 在之前的 helloworld 工程的控制器中添加属性并读取, 如下
- @RestController
- public class HelloController {
- @Value("${myapp.name}")
- private String name;
- @RequestMapping("/hello")
- public String hello(){
- System.out.println("myapp name :" + name);
- return "helloworld";
- }
- }
@Value 注解会去 application.properties 文件中配置属性为 myapp.name 的属性, 并将值赋值给 name 属性. 访问 hello 方法, 可以看到控制台上打印出来的信息
自定义的属性比较少时使用 @Value 读取还是比较方便的, 如果我们的属性比较多的时候, 比如我们要读取数据库连接池配置的很多的属性值, 再这样读取的话, 就显得不是很美观了. 这种情况我们一般定义一个对象, 把属性字段作为对象的属性来接收, 在属性文件中在增加一个属性
myapp.age=2
我们定义一个对象 MyAppProperties 来接收属性值
- @Component
- @ConfigurationProperties(prefix = "myapp")
- public class MyAppProperties {
- private String name;
- private int age;
- @Override
- public String toString() {
- return "MyAppProperties{" +
- "name='" + name + '\'' +
- ", age=" + age +
- '}';
- }
- // 省略 getter 和 setter 方法
- }
@Component 表示指定当前类为实例, 以便可以在 spring 中使用
@ConfigurationProperties(prefix = "myapp") 表示把 application 中的 myapp 开头的属性自动赋值给当前对象的属性, 比如把 myapp.name 的值赋值给 name 属性
访问 hello 方法可以看到
二 自定义属性配置文件
有的时候, 我们需要把自己的属性配置信息写在自己的配置文件中, 以便和系统的 application.properties 分开, 我们可以在 resources 目录下新建自己的属性文件 my.properties, 并添加属性
my.name=helloworld2 my.age=22
定义读取属性的对象类, 使用 @PropertySource("classpath:my.properties") 来指定我们当前类要读取的属性文件
- @Component
- @PropertySource("classpath:my.properties")
- @ConfigurationProperties(prefix = "my")
- public class MyAppProperties2 {
- private String name;
- private int age;
- @Override
- public String toString() {
- return "MyAppProperties2{" +
- "name='" + name + '\'' +
- ", age=" + age +
- '}';
- }
- // 省略 getter 和 setter 方法
- }
修改控制器 hello 方法测试
- @RestController
- public class HelloController {
- @Resource
- private MyAppProperties myAppProperties;
- @Resource
- private MyAppProperties2 myAppProperties2;
- @RequestMapping("/hello")
- public String hello(){
- System.out.println(myAppProperties.toString());
- System.out.println(myAppProperties2.toString());
- return "helloworld";
- }
- }
访问 hello 方法, 可以看到控制台输出的打印信息
来源: https://www.cnblogs.com/love-wzy/p/10310081.html