配置文件的读取,以及Lombok的使用

背景意义:

1.有时候我我们要改变不同的值,有时候,写在java代码里面,还不如写在配置文件里,这样就不需要进行更改java代码了。
2.有时候我们的项目需要进行服务器部署,同时,一般在服务器部署之前需要先进行本地测试。但是,在本地测试的过程中,mysql的数据库密码啊,redis的密码是不一样的,如果我们进行直接更改的话,效率很慢,但是,我们可以设置两个配置文件,但在本地跑的时候,用本地的配置文件,当在云上跑的时候,用云上的。
配置文件内容读取
首先,在配置文件上写上,我们的配置内容。
在这里插入图片描述
这时候,就可以把内容取出来了:
方法一:直接使用@Value来进行取值

package com.example.hellotest;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class ConfigTestController {
    @Value("${person.name}")
    private String name;

    @GetMapping("/name")
    @ResponseBody
    public String getName(){
        return "获取到的姓名是" + name;
    }
}

2.可以把它封装成为一个类,直接加@component交给spring管理

类代码如下:

package com.example.hellotest;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class ConfigClass {
    @Value("${person.name}")
    private String name;
    @Value("${person.age}")
    private String age;
    @Value("${person.high}")
    private String high;
    @Value("${person.weight}")
    private String weight;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getHigh() {
        return high;
    }

    public void setHigh(String high) {
        this.high = high;
    }

    public String getWeight() {
        return weight;
    }

    public void setWeight(String weight) {
        this.weight = weight;
    }

    @Override
    public String toString() {
        return "ConfigClass{" +
                "name='" + name + '\'' +
                ", age='" + age + '\'' +
                ", high='" + high + '\'' +
                ", weight='" + weight + '\'' +
                '}';
    }


}

Controller如下;

package com.example.hellotest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class ConfigTestController {
   @Autowired
    ConfigClass configClass;

    @GetMapping("/name")
    @ResponseBody
    public String getName(){
        return "获取到的信息是" + configClass.toString();
    }
}

结果如下:在这里插入图片描述

注意:类要自动注解要注意路径问题,
在这里插入图片描述

我把启动类放在hellotest路径下,如果把ConfigcClass类放在domain下是不可以进行自动注入的,除非把启动类进行配置过。
2.使用@ConfigurationProperties注解读取
如果配置文件中有比较多的统一配置项,则可以用另外一种方式来获取,以上配置文件中person为例:
在这里插入图片描述
这时候,需要在pom文件中进行jar导入:

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

controller

package com.example.hellotest;

import com.example.domain.ConfigClass;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class ConfigTestController {
   @Autowired
   PersonConfig personConfig;

    @GetMapping("/name")
    @ResponseBody
    public String getName(){
        return "获取到的信息是" + personConfig.toString();
    }
}

结果如下;
在这里插入图片描述

配置文件读取

在系统读取文件时默认读取application文件的,但是有的时候你的代码可能在不同的环境中跑,或者说你需要不同的配置文件来满足不同的需求,那就需要让系统读取其他的配置文件。
先建几个配置文件:
在这里插入图片描述
在这里插入图片描述
然后,就可以在application.yml进行指定启动那个配置文件:
在这里插入图片描述
再次访问结果如下:说明配置文件启动成功:
在这里插入图片描述

Lombok

lombok是一个可以通过简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的java代码的工具。
首先,先要进行安装Lombok
在这里插入图片描述
disable:禁用,因为这里我已经安装好了
其次要添加相关的依赖

			<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
             </dependency>

在项目的开发过程中通过注解来开启Lombok相应的功能,其注解以及对应功能如下:
@Data:自动生成Getter/Setter 、 toString 、 equals 、 hashCode 、不带参数的构造方法。
@Getter/@Setter:自动生成Getter/Setter方法
@NonNull:给方法参数增加这个注解会自动在方法内对该参数进行是否为空的校验,如果为空,则抛出 NPE(NullPointerException)。
@ToString:用在类上可以自动覆写 toString 方法,当然还可以加其他参数
例如 @ToString(exclude=”id”) 排除 id 属性
@AllArgsConstructor : 全部参数构造函数
@NoArgsConstructor : 无参数构造函数
测试如下:

package com.example.domain;

import lombok.AllArgsConstructor;
import lombok.Data;
import org.springframework.stereotype.Component;


@Data
@AllArgsConstructor
public class Person {
    private int id;
    private String name;
    private String iphone;
    private String sex;
}

controller

package com.example.hellotest;

import com.example.domain.Person;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class PersonController {

    @RequestMapping("/person")
    @ResponseBody
    public String person(){
        Person person = new Person(1,"xiaolu","2155555","nan");
        return person.toString();
    }
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值