>  기사  >  Java  >  Java에서 Properties 클래스를 사용하는 방법은 무엇입니까?

Java에서 Properties 클래스를 사용하는 방법은 무엇입니까?

DDD
DDD원래의
2024-10-31 08:35:30587검색

¿Cómo usar la clase Properties en Java?

소개

Java 애플리케이션 작업을 할 때 데이터베이스 URL, 서버 포트 등 일부 구성을 사용하여 작업해야 하는 것이 일반적입니다. 이러한 설정을 코드에 직접 하드코딩하는 대신 속성 파일과 같이 코드 외부에서 설정을 가져오는 데 관심이 있습니다. 또는 나중에 읽을 수 있도록 런타임에 구성을 저장할 수도 있습니다.

이러한 경우에 우리는 특정 시나리오에 대한 자체 솔루션을 개발할 수 있습니다. 예를 들어 텍스트 파일을 만들고 첫 번째 줄에 데이터베이스의 URL을 저장하고 두 번째 줄에 서버 포트 등을 저장합니다. 그러나 이는 지루하고 오류가 발생하기 쉬울 수 있으므로 보다 강력하고 확장 가능한 솔루션이 필요합니다. 이러한 유형의 경우 Java는 Properties 클래스를 사용하는 매우 간단하고 효율적인 솔루션을 제공합니다.

속성 클래스란 무엇입니까?

속성(Properties)은 구성을 일시적으로 메모리에 저장하고 속성 파일에 영구적으로 저장할 수 있는 java.util 패키지에 있는 클래스입니다. 이를 통해 나중에 해당 구성을 읽고 애플리케이션에서 사용할 수 있습니다. Properties 클래스의 인스턴스를 생성하면 각 구성이 키-값 쌍으로 저장되는 사전처럼 작동하는 객체를 얻게 됩니다.

속성 클래스 사용

시작하려면 Properties 클래스의 인스턴스를 만들어야 합니다.

Properties props = new Properties();

HashTable 클래스(이는 다시 Dictionary에서 상속됨)에서 상속함으로써 Properties 클래스 내에서 Object 유형의 메서드가 있음을 알 수 있습니다. 실제로는 값이 문자열 또는 문자열일 것으로 예상됩니다. 그렇지 않으면 값을 다룰 때마다 문자열을 캐스팅할 필요가 없습니다. 이렇게 하면 인스턴스 내에 공통적인 맵 메서드가 있더라도 대부분의 경우 이를 사용할 필요가 없습니다. 예를 들어 get(객체 키)을 사용하는 대신 getProperty(문자열 키)를 사용할 수 있습니다.

속성 정의

속성을 정의하려면 setProperty(문자열 키, 문자열 값) 메소드가 사용됩니다. 이름에서 알 수 있듯이 이 메소드는 키(속성을 호출하는 방법)와 값(속성 값)이라는 두 개의 매개변수를 받습니다. ), 두 매개변수 모두 항상 문자열 유형이어야 한다는 점을 고려하면

Properties props = new Properties();
props.setProperty("DB_HOST", "localhost");
props.setProperty("DB_PORT", "3306");
props.setProperty("DB_USER", "root");
props.setProperty("DB_PASS", "p4ssw0rd");

부동산을 얻으세요

속성을 얻으려면 getProperty(String key) 메소드를 사용할 수 있습니다. 이 메소드는 얻으려는 속성의 키를 매개변수로 받습니다. 속성이 없으면 null이 반환됩니다.

Properties props = new Properties();

속성이 존재하지 않는 경우 null을 얻는 것을 방지하려면 기본값을 두 번째 매개변수로 받는 getProperty(String key, String defaultValue) 메소드를 사용할 수 있습니다.

Properties props = new Properties();
props.setProperty("DB_HOST", "localhost");
props.setProperty("DB_PORT", "3306");
props.setProperty("DB_USER", "root");
props.setProperty("DB_PASS", "p4ssw0rd");

속성 반복

맵 유형 객체이므로(HashTable 메소드를 사용하는 것은 권장되지 않음), EntrySet() 메소드가 있지만 보시다시피 Object 유형이므로 모든 속성을 반복하는 대안은 다음과 같습니다. 모든 속성 키가 포함된 문자열 집합을 반환하는 stringPropertyNames() 메서드를 사용합니다(반환된 값은 특정 순서가 없습니다).

var API_URL = props.getProperty("API_URL");
System.out.println(API_URL);

// Output
null

모든 속성을 표시하는 더 빠른 방법은 list(PrintStream out) 메서드를 사용하는 것입니다. 이 메서드는 매개변수로 전달된 출력 스트림(예: System.out)에 모든 속성을 인쇄합니다.

var API_URL = props.getProperty("API_URL", "http://api.example.com");
System.out.println(API_URL);

// Output
http://api.example.com

속성을 파일에 저장

Properties에서는 속성을 properties(키=값) 형식과 XML 형식으로 저장할 수 있도록 store() 및 storeToXML() 메서드를 제공합니다. 속성이 다른 환경에서 사용되는 경우 유용합니다). save() 메소드는 더 이상 사용되지 않으며 오류 발생 시 예외를 발생시키지 않으므로 사용하지 않는 것이 좋습니다.

속성을 파일에 저장하기 전에 다음을 수행하여 store() 및 System.out 메서드를 사용하여 실제로 저장된 내용을 콘솔에서 확인할 수 있습니다. 발생하는 예외를 어떻게든 제어하는 ​​것이 중요합니다.

for (String prop : props.stringPropertyNames()) {
    System.out.println(prop + " = " + props.getProperty(prop));
}

// Output
DB_PORT = 3306
DB_PASS = p4ssw0rd
DB_USER = root
DB_HOST = localhost

결과를 분석해 보면 첫 번째 줄에 두 번째 인수로 전달된 주석이 저장되어 있는 것을 알 수 있습니다(빈 문자열이어도 상관없으며, null이면 인쇄되지 않습니다). 두 번째 줄에는 속성이 저장된 날짜와 시간이 저장되고, 세 번째 줄부터는 key=value.

형식으로 속성이 저장됩니다.

storeToXML() 메소드를 사용하면 다음 내용이 포함된 파일을 얻을 수 있습니다.

props.list(System.out);

// Output
-- listing properties --
DB_PORT=3306
DB_PASS=p4ssw0rd
DB_USER=root
DB_HOST=localhost

db.properties라는 파일에 속성을 저장하려면 다음을 수행할 수 있습니다.

props.store(System.out, "Database Configuration");

// Output
#Database Configuration
#Thu Oct 10 11:06:04 CST 2024
DB_HOST=localhost
DB_PASS=p4ssw0rd
DB_PORT=3306
DB_USER=root

실행 후 예외가 발생하지 않으면 프로그램이 실행된 디렉터리에 다음 내용과 함께 db.properties라는 이름의 파일이 생성된 것을 볼 수 있습니다.

props.storeToXML(System.out, "Database Configuration");

// Output
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>Database Configuration</comment>
<entry key="DB_PORT">3306</entry>
<entry key="DB_PASS">p4ssw0rd</entry>
<entry key="DB_USER">root</entry>
<entry key="DB_HOST">localhost</entry>
</properties>

속성을 XML 형식으로 저장하려면 store() 메서드를 storeToXML()로 변경하면 됩니다.

Properties props = new Properties();

파일에서 속성 로드

properties 또는 XML, load() 및 loadFromXML() 메서드를 각각 사용할 수 있습니다. 파일이 존재하지 않거나 읽을 수 없는 경우 발생하는 예외를 어떻게든 제어하는 ​​것이 중요합니다.

Properties props = new Properties();
props.setProperty("DB_HOST", "localhost");
props.setProperty("DB_PORT", "3306");
props.setProperty("DB_USER", "root");
props.setProperty("DB_PASS", "p4ssw0rd");
var API_URL = props.getProperty("API_URL");
System.out.println(API_URL);

// Output
null
속성이 로드되면 콘솔에 표시되어 올바르게 로드되었는지 확인할 수 있습니다.


var API_URL = props.getProperty("API_URL", "http://api.example.com");
System.out.println(API_URL);

// Output
http://api.example.com
결론

지금까지 살펴본 바와 같이 Properties 클래스를 사용하면 효율적이고 간단한 방법으로 속성 또는 구성 파일을 사용하여 속성을 저장하고 읽을 수 있으며, 이는 Java 애플리케이션에서 알고 사용하는 것이 흥미로울 것입니다.

위 내용은 Java에서 Properties 클래스를 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.