Home > Java > javaTutorial > How to read custom properties configuration file under SpringBoot

How to read custom properties configuration file under SpringBoot

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Release: 2023-05-13 22:43:11
forward
2550 people have browsed it

1. Create a new .properties file in resource

Create a new config folder in the resource directory, and then create a new .properties file and place it in the folder. As shown in the figure remote.properties

How to read custom properties configuration file under SpringBoot

2. Write the configuration file

remote.uploadFilesUrl=/resource/files/
remote.uploadPicUrl=/resource/pic/
Copy after login

3. Create a new one Configuration class RemoteProperties.java

@Configuration
@ConfigurationProperties(prefix = "remote", ignoreUnknownFields = false)
@PropertySource("classpath:config/remote.properties")
@Data
@Component
public class RemoteProperties {
  private String uploadFilesUrl;
  private String uploadPicUrl;
}
Copy after login

where

@Configuration indicates that this is a configuration class
@ConfigurationProperties(prefix = "remote", ignoreUnknownFields = false) This annotation is used Binding properties. prefix is ​​used to select the prefix of the attribute, which is "remote" in the remote.properties file. ignoreUnknownFields is used to tell SpringBoot to throw an exception when there is an attribute that cannot match the declared field.
@PropertySource("classpath:config/remote.properties") Configuration file path
@Data This is a lombok annotation, used to generate getter&setter methods
@Component is identified as Bean

4. How to use?

Annotate EnableConfigurationProperties(RemoteProperties.class) on the class table where you want to use the configuration file method
and automatically inject

@Autowired
RemoteProperties remoteProperties;
Copy after login

Use remoteProperties.getUploadFilesUrl( in the method ) to get the configuration content.

@EnableConfigurationProperties(RemoteProperties.class)
@RestController
public class TestService{
  @Autowired
  RemoteProperties remoteProperties;

  public void test(){
    String str = remoteProperties.getUploadFilesUrl();
    System.out.println(str);
  }
}
Copy after login

Str here is "/resource/files/" in the configuration file.

PS: Let’s take a look at the two ways to read the config configuration file in Spring-boot

Those who have learned about spring-Boot technology should know Spring-Boot The core configuration file application.properties, of course, you can also customize the configuration file information through annotations.

How Spring-Boot reads the configuration file:

1. Read the contents of the core configuration file information application.properties

Core configuration file It refers to the application.properties or application.yml configuration file in the resources root directory. There are two ways to read these two configuration files, both of which are relatively simple.

The content of the core configuration file application.properties is as follows:

test.msg=Hello World SpringBoot
Copy after login

Method 1: Use @Value method (commonly used)

package Solin.controller; 
import org.springframework.beans.factory.annotation.Value; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RestController; 
@RestController 
public class WebController { 
  @Value("${test.msg}") 
  private String msg; 
  @RequestMapping("/index1")  
  public String index1(){ 
    return "方式一:"+msg; 
  } 
}
Copy after login

Note: in @Value The ${} contains the key name in the core configuration file. Adding @RestController to the Controller class means that all views in this class will be displayed in JSON, similar to adding @ResponseBody to the view method.
When accessing: http://localhost:8088/index1, we get: "Method 1: Hello World SpringBoot"

Method 2: Use Environment method

package Solin.controller; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.beans.factory.annotation.Value; 
import org.springframework.core.env.Environment; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RestController; 
@RestController 
public class WebController { 
  @Autowired 
  private Environment env; 
   
  @RequestMapping("/index2")  
  public String index2(){ 
    return "方式二:"+env.getProperty("test.msg"); 
  } 
}
Copy after login

Note: This method is completed by dependency injection Evnironment. Add the @Autowired annotation to the created member variable private Environment env to complete the dependency injection, and then use env.getProperty("key name") to read the corresponding value.
When accessing: http://localhost:8088/index2, we get: "Method 2: Hello World SpringBoot"

2. Read the custom configuration file information, for example: author.properties

In order not to destroy the original ecology of the core file, but also need to have customized configuration information, usually a custom configuration file will be selected to put this customized information, which is created here in the resources directory. The content of the configuration file author.properties

resources/author.properties is as follows:

author.name=Solin 
author.age=22
Copy after login

Create an entity class for management configuration:

package Solin.controller; 
 
import org.springframework.boot.context.properties.ConfigurationProperties; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.stereotype.Component; 
 
//加上注释@Component,可以直接在其他地方使用@Autowired来创建其实例对象 
@Component 
@ConfigurationProperties(prefix = "author",locations = "classpath:author.properties")   
public class MyWebConfig{ 
  private String name; 
  private int age; 
  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; 
  } 
}
Copy after login

Note:

There are two properties in the @ConfigurationProperties annotation:

locations: Specify the location of the configuration file
prefix: Specify the prefix of the key name in the configuration file (in my configuration file here All key names start with author.)

Using @Component allows the class to be relied upon in other places, that is, using the @Autowired annotation to create instances.

Create Test Controller

package Solin.controller; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.ResponseBody; 
@Controller  
public class ConfigController { 
  @Autowired 
  private MyWebConfig conf; 
   
  @RequestMapping("/test")  
  public @ResponseBody String test() { 
    return "Name:"+conf.getName()+"---"+"Age:"+conf.getAge();  
  } 
}
Copy after login

Note: Since the @Component annotation is added to the Conf class, you can use @Autowired directly here to create its instance object.

When accessing: http://localhost:8088/test, I got: "Name:Solin---Age:22"

The above is the detailed content of How to read custom properties configuration file under SpringBoot. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template