클래스 로더를 이용한 경로 얻기
장점:
- 플랫폼 독립적: 클래스 로더를 사용하면 운영 체제나 파일 시스템에 구애받지 않고 리소스를 참조할 수 있습니다. 이는 애플리케이션이 다양한 환경에서 실행될 때 특히 유용합니다.
- 애플리케이션 패키지 내부 참조: 리소스가 애플리케이션의 클래스패스 내에 위치할 경우, 클래스 로더를 사용하여 쉽게 참조할 수 있습니다. 이는 JAR 파일 내부의 리소스를 참조할 때 매우 편리합니다.
- 보안: 클래스 로더를 사용하면 파일 시스템의 절대 경로를 직접 다루지 않아도 되므로, 보안상의 위험을 줄일 수 있습니다.
단점:
- 유연성 부족: 클래스 로더를 사용할 때는 리소스가 클래스패스에 있어야 하므로, 외부 디렉토리나 네트워크 상의 리소스를 직접 참조하는 것이 더 어려울 수 있습니다.
- 경로 문제: 때때로 클래스 로더를 사용하여 리소스를 찾을 때 경로가 올바르지 않으면 리소스를 찾지 못하는 문제가 발생할 수 있습니다. 이는 특히 복잡한 프로젝트 구조에서 문제가 될 수 있습니다.
절대 경로로 지정하기
장점:
- 유연성: 절대 경로를 사용하면 시스템의 어느 위치에 있는 파일이든지 직접 참조할 수 있습니다. 이는 외부 리소스나 사용자가 지정한 파일을 다룰 때 유용합니다.
- 간단함: 특정 상황에서는 절대 경로를 사용하는 것이 더 직관적이고 간단할 수 있습니다. 개발자는 파일이 정확히 어디에 있는지 명확하게 알 수 있습니다.
단점:
- 플랫폼 의존성: 절대 경로는 운영 체제의 파일 시스템 구조에 의존하기 때문에, 코드를 다른 플랫폼으로 이식할 때 문제가 될 수 있습니다.
- 보안 위험: 사용자의 시스템에 있는 파일을 직접 참조할 때는 보안상의 위험이 있을 수 있습니다. 악의적인 사용자가 중요한 시스템 파일에 접근할 수 있는 경로를 제공할 수 있기 때문입니다.
- 유지 관리: 애플리케이션이나 리소스의 위치가 변경될 경우, 절대 경로를 사용하는 모든 코드를 찾아서 업데이트해야 합니다. 이는 유지 관리를 더 어렵게 만들 수 있습니다.
ex)
// 클래스 로더를 사용하여 InputStream 얻기
InputStream is = S3DAO.class.getResourceAsStream("이름.properties");
try {
if (is == null) {
throw new FileNotFoundException("awsRds.properties file not found");
}
properties.load(is);
String value1 = properties.getProperty("key");
String value2 = properties.getProperty("key");
String value3 = properties.getProperty("key");
} catch (Exception e) {
e.printStackTrace();
}
'2024 웹' 카테고리의 다른 글
Java-[JSP + Sevelt](Eclipse) Project [Docker + AWS] 를 이용한 배포 (0) | 2024.05.13 |
---|---|
git pull 요청시 merge error (0) | 2024.04.10 |
git pull 받기 (0) | 2024.04.09 |
semi project1 - 초간단 코드 설명 (0) | 2024.04.08 |
semi project1 - git hub 클론 받기 (0) | 2024.04.08 |
댓글