[SPRING] 프로그래밍 방식으로 리소스 디렉터리 경로를 얻는 방법
SPRING프로그래밍 방식으로 리소스 디렉터리 경로를 얻는 방법
다음 디렉토리 레이아웃이 있습니다.
ServletContextListener 클래스 내에서 SQL 디렉토리 아래의 파일에 액세스하여 나열하려고합니다. 기본적으로 내 문제는 경로와 관련이 있습니다. 간단히 말해 디렉토리 아래에 파일을 나열한다는 사실을 알고 있기 때문입니다.
File folder = new File(path);
File[] listOfFiles = folder.listFiles();
아마도 ServletContextEvent 객체를 사용하여 resources / sql에 대한 경로를 만들 수 있습니다.
public void contextInitialized(ServletContextEvent event) {
event.getServletContext(); //(getRealPath etc.)
}
하드 코딩되지 않은 상대 경로로 그 경로를 설정하는 것이 있습니까? 새로운 File ( "classpath : sql") (가능한 경우 봄) 또는 resources / sql을 가리키는 servletContext와 어떤 작업을해야합니까?
해결법
-
==============================
1.src / main / resources /의 내용이 빌드시에 .war의 WEB-INF / classes / 안에 복사된다고 가정합니다. 이 경우에는 할 수 있습니다 (클래스 이름과로드 할 경로에 실제 값을 대체하십시오).
src / main / resources /의 내용이 빌드시에 .war의 WEB-INF / classes / 안에 복사된다고 가정합니다. 이 경우에는 할 수 있습니다 (클래스 이름과로드 할 경로에 실제 값을 대체하십시오).
URL sqlScriptUrl = MyServletContextListener.class .getClassLoader().getResource("sql/script.sql");
-
==============================
2.마침내 이것이 내가 한 일입니다.
마침내 이것이 내가 한 일입니다.
private File getFileFromURL() { URL url = this.getClass().getClassLoader().getResource("/sql"); File file = null; try { file = new File(url.toURI()); } catch (URISyntaxException e) { file = new File(url.getPath()); } finally { return file; } }
...
File folder = getFileFromURL(); File[] listOfFiles = folder.listFiles();
-
==============================
3.
import org.springframework.core.io.ClassPathResource; ... File folder = new ClassPathResource("sql").getFile(); File[] listOfFiles = folder.listFiles();
이것이 배치 옵션을 제한 할 것이라는 점은 주목할 가치가 있습니다. ClassPathResource.getFile ()은 컨테이너가 war 파일을 분해 (압축 해제) 한 경우에만 작동합니다.
-
==============================
4.com.google.common.io.Resources 클래스 만 사용하면됩니다. 예:
com.google.common.io.Resources 클래스 만 사용하면됩니다. 예:
URL url = Resources.getResource("file name")
그 다음에는 .getContent (), .getFile (), .getPath () 등의 메소드가 있습니다.
from https://stackoverflow.com/questions/19414453/how-to-get-resources-directory-path-programmatically by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring ApplicationListener가 이벤트를 수신하지 않습니다. (0) | 2019.03.04 |
---|---|
[SPRING] Spring에서 GET 및 POST 요청 메소드 결합 (0) | 2019.03.04 |
[SPRING] 단위 테스트 또는 통합 테스트에 Spring의 MockMvc가 사용됩니까? (0) | 2019.03.04 |
[SPRING] Spring과 Hibernate를 사용하는 좋은 샘플 애플리케이션은 무엇인가? [닫은] (0) | 2019.03.04 |
[SPRING] Spring MVC : 양식을 게시 할 때 추가되는 URL 경로 (0) | 2019.03.04 |