본문 바로가기

개발/Spring

Ioc 컨테이너 - ResourceLoader

반응형

ResourceLoader
 - 리소스를 읽어오는 기능을 제공하는 인터페이스
   리소스 로더의 역할을 한다. 


ApplicationContext extends ResourceLoader
>> ApplicationContext 를 받아서 사용할 수 도 있고, ResourceLoader을 받아서 할 수 도있다.
     명확하게 ResourceLoader 을 받아서 하는 것을 추천한다.

ApplicationContext > ResourcePatternResolver > ResourceLoader 로 이어지는 상속 관계

 

1. ResourceLoader을 이용해 리소스 파일 읽어오기
 1) 클래스패스로 읽어오기
 - 리소스 파일 생성 

- 소스 

package com.bpkim.demospring51;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.context.ApplicationContext;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RestController;

import java.nio.file.Files;
import java.nio.file.Path;

@Component
public class AppRunner implements ApplicationRunner {

    @Autowired
    ResourceLoader resourceLoader;

    @Override
    public void run(ApplicationArguments args) throws Exception{
        System.out.println(resourceLoader.getClass());
        Resource resource = resourceLoader.getResource("classpath:test.txt");
        System.out.println(resource.getClass());

        // 리소스 파일 존재
        System.out.println(resource.exists());
        System.out.println(resource.getDescription());


        Resource resource1 = resourceLoader.getResource("classpath:test_no.txt");
        System.out.println(resource1.getClass());

        // 리소스 파일 없음
        System.out.println(resource1.exists());
        System.out.println(resource1.getDescription());

//        System.out.println(Files.readString(Path.of(resource.getURI())));

    }
}

- 실행 결과
 text.txt 는 exixts() 에서 true 
 text_no.txt는 false 를 리턴하였다. 

 

반응형

'개발 > Spring' 카테고리의 다른 글

Validation 추상화  (0) 2021.04.22
Resource 추상화  (0) 2021.04.22
IoC - ApplicationEventPublisher  (0) 2021.04.11
IoC - MessageSource  (0) 2021.04.11
IoC - Environment - 프로퍼티  (0) 2021.04.11