몇 가지 클래스가 있는데 일부 속성 파일을로드해야하며이를 수행하는 가장 좋은 방법이 무엇인지 궁금합니다. 속성은 각 클래스에 파일 이름을 다음 사람이 등록 정보 파일의 이름을 변경하기로 결정하면 문제가 될 수있는하는 FileInputStream
에서로드 할 Properties
클래스를 사용속성을로드하는 가장 좋은 전략은 무엇입니까?
하드 코딩 : 나는 두 가지 기본 방법을 생각 , 코드에서 하드 코딩됩니다.
public class A { public A() { Properties p = new Properties().load( new FileInputStream("properties/Aconfig.properties")); String value = p.getProperty("key", ""); } }
클래스 이름 주어진 클래스와 같은 이름을 가진 속성 파일을로드하는 방법을 만들기
. 이 방법은 속성 파일 이름을 하드 코드 할 필요가 없지만 파일 명명에 규칙을 따라야하므로 혼동이 발생할 수 있습니다. 그러나
, 거기에 많은 다른 더 우아한 방법, 그리고 내가이 질문을 제기 그 이유는 수 있습니다 : 자바에서로드 특성 파일에 대한 가장 좋은 방법은 무엇 I)?; ii) 직업을 돌보는 도우미 클래스를 사용합니까?; iii) (코드에서) 일반적으로 등록 정보 파일을로드하는 위치는 어디입니까?public class A { public A() { Properties p = PropertiesHelper.loadFromClassName(A.class.getName()); // here, we **assume** that there is a A.properties file in the classpath. } }
또한 클래스가 속성을 "자동로드"해도 괜찮습니까? 아니면 필요한 인수를 생성자에 전달해야합니까? 인수를 전달하는 문제는 일부 클래스 (통계 모델의 매개 변수를 나타내는 ~ 20)에 너무 많은 방법이 있다는 것입니다.
예 :), 특정 문제에 대해 SF를 사용하려고합니다. 그러나이를 위해 속성 파일을 모든 사람 (컴퓨터 프로그래머가 아님)이 쉽게 구성/변경할 수 있기를 원하므로 간단한 "키 = 값"기반 파일 스키마가 필요합니다. –
당신은 여전히 그것을 할 수 있습니다. Spring은 매우 훌륭한 리소스 추상화 레이어를 가지고 있습니다 : http://static.springsource.org/spring/docs/2.5.x/reference/resources.html 그러면 클래스를 묶지 않고 "있는 그대로"의 속성 파일을 처리 할 수 있습니다. 그들에게 직접. – ChssPly76
흠, 나는 그것에 대해 읽을 것입니다. 고마워요. 내가 안에 요소를 언급하고 있다고 생각했습니다. 귀하의 질문에 관해서는 기본적으로 모델 매개 변수를 많이 저장합니다 (예 : numberOfTrials = 50 등). –