> Java > java지도 시간 > 본문

SpringBoot에서 사용자 정의 속성 구성 파일을 읽는 방법

WBOY
풀어 주다: 2023-05-13 22:43:11
앞으로
2342명이 탐색했습니다.

1. 리소스에 새 .properties 파일을 생성합니다

리소스 디렉터리에 config 폴더를 생성한 다음 새 .properties 파일을 생성하여 해당 폴더에 넣습니다. 그림과 같이 Remote.properties

SpringBoot에서 사용자 정의 속성 구성 파일을 읽는 방법

2. 구성 파일을 작성합니다.

remote.uploadFilesUrl=/resource/files/
remote.uploadPicUrl=/resource/pic/
로그인 후 복사

3. 새 구성 클래스를 만듭니다. RemoteProperties.java

@Configuration
@ConfigurationProperties(prefix = "remote", ignoreUnknownFields = false)
@PropertySource("classpath:config/remote.properties")
@Data
@Component
public class RemoteProperties {
  private String uploadFilesUrl;
  private String uploadPicUrl;
}
로그인 후 복사

그 중

@Configuration은 다음과 같음을 나타냅니다. 구성 클래스
@ ConfigurationProperties(prefix = "remote",ignoreUnknownFields = false) 이 주석은 속성을 바인딩하는 데 사용됩니다. prefix는 remote.properties 파일에서 "remote"인 속성의 접두사를 선택하는 데 사용됩니다.ignoreUnknownFields는 선언된 필드와 일치할 수 없는 속성이 있는 경우 SpringBoot에 예외를 발생시키도록 지시하는 데 사용됩니다.
@PropertySource("classpath:config/remote.properties") 구성 파일 경로
@Data getter&setter 메소드를 생성하는 데 사용되는 lombok 주석입니다.
@Component는 Bean으로 식별됩니다.

4. 어떻게 사용합니까?

구성 파일을 사용하려는 클래스의 테이블에 EnableConfigurationProperties(RemoteProperties.class)
주석을 달고 자동으로

@Autowired
RemoteProperties remoteProperties;
로그인 후 복사

remoteProperties.getUploadFilesUrl()을 메소드에 주입하여 구성 내용을 가져옵니다.

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

  public void test(){
    String str = remoteProperties.getUploadFilesUrl();
    System.out.println(str);
  }
}
로그인 후 복사

Str 여기 구성 파일의 "/resource/files/"가 있습니다.

PS: Spring-boot에서 구성 구성 파일을 읽는 두 가지 방법을 살펴보겠습니다

spring-Boot 기술을 아는 사람은 Spring-Boot의 핵심 구성 파일인 application.properties를 알아야 합니다. , 사용자 정의 구성 파일의 정보에 주석 달기를 사용할 수도 있습니다.

Spring-Boot가 구성 파일을 읽는 방법:

1. 핵심 구성 파일 정보 application.properties의 내용을 읽습니다.

핵심 구성 파일은 리소스 루트의 application.properties 또는 application.yml 구성을 참조합니다. 디렉터리 파일에는 이 두 가지 구성 파일을 읽는 방법이 두 가지가 있으며 둘 다 상대적으로 간단합니다.

핵심 구성 파일 application.properties의 내용은 다음과 같습니다.

test.msg=Hello World SpringBoot
로그인 후 복사

방법 1: @Value 메서드 사용(일반적으로 사용됨)

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; 
  } 
}
로그인 후 복사

참고: @Value의 ${}에는 키 이름이 포함되어 있습니다. 핵심 구성 파일. Controller 클래스에 @RestController를 추가하면 @ResponseBody를 뷰 메서드에 추가하는 것과 유사하게 이 클래스의 모든 뷰가 JSON으로 표시됩니다.
http://localhost:8088/index1에 액세스하면 다음이 표시됩니다. "방법 1: Hello World SpringBoot"

방법 2: 환경 방법 사용

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"); 
  } 
}
로그인 후 복사

참고: 이 방법은 종속성 주입 Evnironment에 의해 완료됩니다. 생성 @Autowired 주석을 멤버 변수 private Environment env에 추가하여 종속성 주입을 완료한 다음 env.getProperty("key name")를 사용하여 해당 값을 읽습니다.
http://localhost:8088/index2에 액세스하면 다음이 표시됩니다. "방법 2: Hello World SpringBoot"

2. 다음과 같은 사용자 정의 구성 파일 정보를 읽습니다.author.properties

코어 파일을 손상시키십시오. 그러나 사용자 정의된 구성 정보가 필요합니다. 일반적으로 이 사용자 정의된 정보를 저장하려면 사용자 정의 구성 파일이 선택됩니다. 여기에서 리소스 디렉토리에 구성 파일 작성자.properties

resources/author.properties를 작성하십시오. 내용은 다음과 같습니다.

author.name=Solin 
author.age=22
로그인 후 복사

구성을 관리하는 엔터티 클래스 만들기:

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; 
  } 
}
로그인 후 복사

참고:

@ConfigurationProperties 주석에는 두 가지 속성이 있습니다.

locations: 구성 파일의 위치를 ​​지정합니다.
접두사: 구성 파일에 키 이름을 지정합니다. 접두사(여기서 구성 파일의 모든 키 이름은 작성자로 시작합니다.)

@Component를 사용하면 클래스를 다른 위치에서 사용할 수 있습니다. 즉, @를 사용합니다. 인스턴스를 생성하기 위한 Autowired 주석입니다.

테스트 컨트롤러 만들기

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();  
  } 
}
로그인 후 복사

참고: @Component 주석이 Conf 클래스에 추가되었으므로 여기에서 @Autowired를 직접 사용하여 인스턴스 개체를 만들 수 있습니다.

http://localhost:8088/test에 접속하면 "이름:Solin---나이:22"

이 표시됩니다.

위 내용은 SpringBoot에서 사용자 정의 속성 구성 파일을 읽는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿