찾다
백엔드 개발XML/RSS 튜토리얼Java 작업 속성 구성 파일

Java에는 속성(Java.util.Properties) 클래스가 있는데, 이는 주로 Java 구성 파일을 읽고 구성 속성에서 변경해야 할 일부 값을 저장하는 데 주로 사용됩니다. 속성 파일은 실제로 일반 텍스트 파일입니다. 파일 내용의 형식은 "key=value" 형식이며 텍스트 주석 정보에는 "#"이라는 주석이 달릴 수 있습니다. 저장을 위해 UTF-8 형식을 사용해 보십시오. jdk에서 제공하는 클래스 자체에는 단점이 있기 때문에 분석을 위해 주로 commons-configuration 프레임워크를 사용합니다.

1.1.1. 속성 클래스 다이어그램

1.1.2 속성 구성 파일 읽기더 일반적으로 사용되는 방법은

1입니다. java.lang.Class 클래스
InputStream in = getClass().getResourceAsStream("파일 이름"의 getResourceAsStream(문자열 이름)
메서드를 사용하세요. );

2. 스트림 작업 사용

InputStream in = new BufferedInputStream(new FileInputStream(filepath));

1.1.3.단점

1. 형식은 k=v 이어야 합니다.

2. 변경된 값은 정기적으로 새로 고칠 수 없습니다(예를 들어 온라인 환경 수정 값 프로그램은 여전히 ​​이전 값을 읽습니다). 자신만의 프로그램 컨트롤을 작성해야 합니다.

3. 값은 모두 string 형식이며 직접 구할 때 필요에 따라 변환해야 합니다.

위의 단점을 바탕으로 org.apache.commons.configuration 클래스를 사용하여 문제를 해결할 수 있습니다. 일상적인 개발에서는 다음을 읽습니다. 속성 캡슐화.

1.1.4. Commons 구성 프레임워크 사용

1.1.4.1.maven패키지 가져오기


 <dependency>
        <groupId>commons-configuration</groupId>
        <artifactId>commons-configuration</artifactId>
        <version>1.8</version>
</dependency>



1.1.4.2 도구 클래스 패키지


package cn.xhgg.common.configuration;
 
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
 
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
 
/**
 * 这个类型的配置,文件首先需要有配置文件,其次配置文件应该写入该类,再则配置文件的编码方式必须是UTF8
 */
public class PropertiesConfigUtil {
private static Logger log = LoggerFactory.getLogger(PropertiesConfigUtil.class);
 
public static final String PROPS_SUFFIX = ".properties";
private static Map<String, PropertiesConfiguration> configMap = new ConcurrentHashMap<String, PropertiesConfiguration>();
private static PropertiesConfiguration getConfig(String configName) {
//去除空格
configName = configName.trim();
//有后缀使用后缀 没后缀 添加后缀
String configSig = StringUtils.endsWith(configName, PROPS_SUFFIX) ? configName : configName+PROPS_SUFFIX;
if (configMap.containsKey(configSig)) {
return configMap.get(configSig);
}
PropertiesConfiguration config = null;
try {
config=new PropertiesConfiguration();
config.setEncoding("UTF-8");
config.load(configSig);
//默认五秒检查一次
config.setReloadingStrategy(new FileChangedReloadingStrategy());
config.setThrowExceptionOnMissing(true);
configMap.put(configSig, config);
} catch (ConfigurationException e) {
e.printStackTrace();
}
return config;
}
public static Map<String, String> getKeyValuePairs(String configSig) {
PropertiesConfiguration config = getConfig(configSig);
if (config == null) {
return null;
}
Iterator<String> iters = config.getKeys();
Map<String, String> retMap = new HashMap<String, String>();
while (iters.hasNext()) {
String beforeKey = iters.next();
if (retMap.containsKey(beforeKey)) {
log.warn(configSig + " configKey:" + beforeKey + " repeated!!");
}
retMap.put(beforeKey, config.getString(beforeKey));
}
return retMap;
}
/**
 * 通过PropertiesConfiguration取得参数的方法
 * <p>
 * 
 * @return 。
 */
static public String getString(String configSig, String key) {
return getConfig(configSig).getString(key);
}
 
static public String getString(String configSig, String key, String defaultValue) {
return getConfig(configSig).getString(key, defaultValue);
}
 
static public int getInt(String configSig, String key) {
return getConfig(configSig).getInt(key);
}
 
static public int getInt(String configSig, String key, int defaultValue) {
return getConfig(configSig).getInt(key, defaultValue);
}
 
static public boolean getBoolean(String configSig, String key) {
return getConfig(configSig).getBoolean(key);
}
 
static public boolean getBoolean(String configSig, String key, boolean defaultValue) {
return getConfig(configSig).getBoolean(key, defaultValue);
}
 
static public double getDouble(String configSig, String key) {
return getConfig(configSig).getDouble(key);
}
 
static public double getDouble(String configSig, String key, double defaultValue) {
return getConfig(configSig).getDouble(key, defaultValue);
}
 
static public float getFloat(String configSig, String key) {
return getConfig(configSig).getFloat(key);
}
 
static public float getFloat(String configSig, String key, float defaultValue) {
return getConfig(configSig).getFloat(key, defaultValue);
}
 
static public long getLong(String configSig, String key) {
return getConfig(configSig).getLong(key);
}
 
static public long getLong(String configSig, String key, long defaultValue) {
return getConfig(configSig).getLong(key, defaultValue);
}
 
static public short getShort(String configSig, String key) {
return getConfig(configSig).getShort(key);
}
 
static public short getShort(String configSig, String key, short defaultValue) {
return getConfig(configSig).getShort(key, defaultValue);
}
 
static public List<Object> getList(String configSig, String key) {
return getConfig(configSig).getList(key);
}
 
static public List<Object> getList(String configSig, String key, List<Object> defaultValue) {
return getConfig(configSig).getList(key, defaultValue);
}
 
static public byte getByte(String configSig, String key) {
return getConfig(configSig).getByte(key);
}
 
static public byte getByte(String configSig, String key, byte defaultValue) {
return getConfig(configSig).getByte(key, defaultValue);
}
 
static public String[] getStringArray(String configSig, String key) {
return getConfig(configSig).getStringArray(key);
}
}



1.1.4.3.

속성테스트 파일

rabbitmq.properties

을 소개하면 다음과 같이 구성됩니다.


#rpc 模式rmq
rpc.rabbit.host=l-opsdev3.ops.bj0.jd.com
rpc.rabbit.port=5672
rpc.rabbit.username=jd_vrmphoto
rpc.rabbit.password=jd_vrmphoto
rpc.rabbit.vhost=jd/vrmphoto
rpc.rabbit.queue=rpc_queue
rpc.rabbit.exchange=photoworker
rpc.rabbit.key=photoworker.rpc



1.1.4.4.테스트


PropertiesConfigUtil config=new PropertiesConfigUtil();
String username = config.getString("rabbitmq", "rpc.rabbit.username");
System.out.println(username);



출력 결과:

jd_vrmphoto

알았어,

완료.

1.1.4.5. 주의사항

1. 인코딩은

UTF-8으로 통일하는 것이 가장 좋습니다.

ReloadingStrategy 전략 선택. 특정 구현 클래스와 사용 시나리오를 살펴볼 수 있습니다. 저는 일반적으로 FileChangedReloadingStrategy 클래스를 사용합니다.

위 내용은 java 연산 속성 설정 파일 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!



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

RSS에서 XML의 핵심 역할은 표준화되고 유연한 데이터 형식을 제공하는 것입니다. 1. XML의 구조 및 마크 업 언어 특성은 데이터 교환 및 스토리지에 적합합니다. 2. RSS는 XML을 사용하여 컨텐츠 공유를 용이하게하기 위해 표준화 된 형식을 만듭니다. 3. RSS에서 XML의 적용에는 제목 및 출시 날짜와 같은 피드 컨텐츠를 정의하는 요소가 포함됩니다. 4. 표준화 및 확장 성이 포함되며, 문제에는 문서 장황 및 엄격한 구문 요구 사항이 포함됩니다. 모범 사례에는 XML 유효성 검증, 간단한 유지, CDATA 사용 및 정기적으로 업데이트가 포함됩니다.

XML에서 읽기 쉬운 컨텐츠까지 : Demystifying RSS 피드XML에서 읽기 쉬운 컨텐츠까지 : Demystifying RSS 피드Apr 11, 2025 am 12:03 AM

RSSFEEDSAREXMLDOCUMentsORMUSSEDFORCONTENGAGNEGANGANDANDAND 및 DISTIBLITION.TOTRANSFORMTHEMINTOREADBECONCONTENT : 1) PARSETHEXMLUSINGLIBRARIES LIKEFEDPARSERINPYTHON.2) HORDLEDIFFERENTSSSSSSONS 및 POTELINGEPARSINGERRORS.3) 변형 된 정보 형식 FrrONTLIKETLIKET

JSON을 기반으로 RSS 대안이 있습니까?JSON을 기반으로 RSS 대안이 있습니까?Apr 10, 2025 am 09:31 AM

JSONFEED는 JSON 기반 RSS 대안으로 단순성과 사용 편의성을 갖는 장점이 있습니다. 1) JSONFEED는 JSON 형식을 사용하여 생성 및 구문 분석이 쉽습니다. 2) 동적 생성을 지원하며 현대 웹 개발에 적합합니다. 3) JSONFEED를 사용하면 컨텐츠 관리 효율성과 사용자 경험이 향상 될 수 있습니다.

RSS 문서 도구 : 피드 구축, 검증 및 게시RSS 문서 도구 : 피드 구축, 검증 및 게시Apr 09, 2025 am 12:10 AM

RSSFeeds를 구축, 검증 및 게시하는 방법은 무엇입니까? 1. 빌드 : Python 스크립트를 사용하여 제목, 링크, 설명 및 출시 날짜를 포함하여 RSSFEED를 생성합니다. 2. 확인 : FeedValidator.org 또는 Python 스크립트를 사용하여 RSSFEED가 RSS2.0 표준을 준수하는지 확인하십시오. 3. 게시 : RSS 파일을 서버에 업로드하거나 Flask를 사용하여 RSSFEED를 동적으로 생성 및 게시합니다. 이 단계를 통해 컨텐츠를 효과적으로 관리하고 공유 할 수 있습니다.

XML/RSS 피드 확보 : 포괄적 인 보안 체크리스트XML/RSS 피드 확보 : 포괄적 인 보안 체크리스트Apr 08, 2025 am 12:06 AM

XML/RSSFEEDS의 보안을 보장하는 방법에는 다음이 포함됩니다. 1. 데이터 검증, 2. 암호화 된 전송, 3. 액세스 제어, 4. 로그 및 모니터링. 이러한 측정은 네트워크 보안 프로토콜, 데이터 암호화 알고리즘 및 액세스 제어 메커니즘을 통해 데이터의 무결성과 기밀성을 보호합니다.

XML/RSS 인터뷰 질문 및 답변 : 전문 지식을 레벨 업하십시오XML/RSS 인터뷰 질문 및 답변 : 전문 지식을 레벨 업하십시오Apr 07, 2025 am 12:19 AM

XML은 데이터를 저장하고 전송하는 데 사용되는 마크 업 언어이며 RSS는 자주 업데이트되는 컨텐츠를 게시하는 데 사용되는 XML 기반 형식입니다. 1) XML은 태그 및 속성을 통해 데이터 구조를 설명합니다. 2) RSS는 특정 태그 게시 및 구독 컨텐츠를 정의하고 3) XML을 생성하고 Python의 xml.etree.elementtree Module, 4) XPPARSERPERS, 5) FEEDPARSER LIBRATION을 포함 할 수 있습니다. SAX 파서로 대형 XML 파일을 처리하면 성능을 최적화 할 수 있습니다.

고급 XML/RSS 자습서 : ACE 다음 기술 인터뷰고급 XML/RSS 자습서 : ACE 다음 기술 인터뷰Apr 06, 2025 am 12:12 AM

XML은 데이터 저장 및 교환을위한 마크 업 언어이며 RSS는 업데이트 된 컨텐츠를 게시하기위한 XML 기반 형식입니다. 1. XML은 데이터 교환 및 스토리지에 적합한 데이터 구조를 정의합니다. 2.RSS는 콘텐츠 구독에 사용되며 구문 분석시 특수 라이브러리를 사용합니다. 3. XML을 구문 분석 할 때 DOM 또는 색소폰을 사용할 수 있습니다. XML 및 RSS를 생성 할 때는 요소 및 속성을 올바르게 설정해야합니다.

XML/RSS에서 JSON까지 : 현대 데이터 변환 전략XML/RSS에서 JSON까지 : 현대 데이터 변환 전략Apr 05, 2025 am 12:08 AM

Python을 사용하여 XML/RSS에서 JSON으로 변환하십시오. 1) 소스 데이터, 2) 추출 필드, 3) JSON으로 변환, 4) 출력 JSON. XML.etree.elementtree 및 FeedParser 라이브러리를 사용하여 XML/RSS를 구문 분석하고 JSON 라이브러리를 사용하여 JSON 데이터를 생성하십시오.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구