2017-12-16 7 views
0

나는 로컬 파일 시스템에서 정적 파일을 제공 나의 봄 부트 프로젝트의 구성에서 다음이 필요 : 설정 위스프링 부트 : 정적 리소스 핸들러를 동적으로 변경 하시겠습니까?

@Configuration 
public class StaticResourceConfiguration extends WebMvcConfigurerAdapter { 
    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) 
    { 
     System.out.println("adding resource handler"); 
     registry.addResourceHandler("/myfiles/**").addResourceLocations("file:///C:/Users/Pepria/Downloads/static_files/"); 
    } 
} 

잘 작동하지만 런타임에 동적으로 자원 위치를 변경하고 싶습니다. 내가 알기로, 위의 코드는 내 논리가 실행되기 전에 실행됩니다. 어떻게이 일을 할 수 있습니까?

+0

위치를'.properties' 파일에 추가하기 만하면됩니다. 'Environment' 인스턴스를 삽입하고 "locations"를 추가하기 전에 그것으로부터 키/값을 읽으십시오. –

+0

@ ɯıp I 앞서 언급했듯이, 리소스 위치는이 구성이 생성 된 이후의 것일 것이라고 생각되는 자바 클래스 중 하나에 의해 읽혀질 것입니다. 기본적으로 애플리케이션이 처음 시작될 때 리소스 위치를 알지 못한다고 가정합니다 런타임 중에 발견 할 것입니다. 그럼 당신의 접근 방식은 효과가 있습니까? – Pepria

답변

0

당신은 다음과 같이 원하는 경로로 ResourceHandler을 추가 할 수 있습니다

registry.addResourceHandler("/myfiles/**").addResourceLocations("file:" + Strings.filePath); 

당신은 어떤 시간에 당신이 응용 프로그램에서 Strings.filePath을 설정할 수 있습니다.

public class Strings { 
    public static String filePath; 
    //or maybe setters getters 
} 
관련 문제