FrameWorks/Spring & Boot

[Spring Object] Resource

ABCD 2025. 2. 6.

Resource

Spring의 Resource객체를 활용하면 다른 정적인 파일들도 읽어 올 수 있습니다.

public class BannerLoader {

    private Reosurce banner;

    public void setBanner(Resource banner) {
        this.banner = banner;
    }

    @PostContstruct
    public void showBanner() throws IOException {
        Files.lines(Path.get(banner.getURI()), Charset.forName("UTF-8"))
            .forEachOrdered(System.out::println);
    }
}

 

showBanner() 메서드로 인해 배너 파일의 내용을 차례때로 읽어 콘솔에 한 줄씩 출력할 것입니다. @PostConstruct를 붙여 Spring에게 빈을 생성한 후 이 메서드를 자동으로 실행하도록 지시합니다. 아래 코드를 추가하여 로직을 완성하겠습니다.

@Configuration
@PropertySource("classpath:discounts.properties")
@ComponentScan("com.apress.springrecipes.shop")
public class ShopConfiguration {

    @Value("${classpath:banner.txt}")
    private Resource banner;

    @Bean
    public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
        return new PropertySourcesPlaceholderConfigurer();
    }

    @Bean
    public BannerLoader bannerLoader() {
        BannerLoader bl = new BannerLoader();
        bl.setBanner(banner);
        return bl;
    }
}

 

classpath가 아닌 절대경로, URL로 위치를 특정할 수도 있습니다.

Resource resource1 = new FileSystemResource("c:/shop/banner.txt");
Rexource resource2 = new UrlResource("http://www.apress.com/");
728x90
반응형

'FrameWorks > Spring & Boot' 카테고리의 다른 글

[Spring Object] TaskExcutor  (0) 2025.02.06
[Spring Object] MessageSource  (0) 2025.02.06
[Spring Object] ApplicationEvent  (0) 2025.02.03
[Spring Object] Aware  (0) 2025.02.03
[Spring Object] AbstractFactoryBean  (0) 2025.01.21

댓글

💲 추천 글