How to read custom properties configuration file under SpringBoot
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
2. Write the configuration file
remote.uploadFilesUrl=/resource/files/ remote.uploadPicUrl=/resource/pic/
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; }
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;
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); } }
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
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; } }
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"); } }
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
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; } }
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(); } }
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!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

Dreamweaver CS6
Visual web development tools

WebStorm Mac version
Useful JavaScript development tools

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

Notepad++7.3.1
Easy-to-use and free code editor