스프링 핵심 기술-08.ResourceLoader 및 후기(IoC 컨테이너)
IoC 컨테이너 9부 : ResourceLoader
ResourceLoader
리소스를 읽어오는 기능을 제공하는 인터페이스 입니다.
(ApplicationContext extends ResourceLoader)
마찬가지로 ApplicationContext가 상속받고 있습니다.
리소스 읽어오기
- 파일 시스템에서 읽어오기
- 클래스패스에서 읽어오기
- URL로 읽어오기
- 상대/절대 경로로 읽어오기
Resource getResource(java.lang.String location)
@Component
public class AppRunner implements ApplicationRunner {
// @Autowired
// ApplicationContext applicationContext
// 상속 받았기 때문에 가능은 하지만 가장 구체적인 인터페이스를 받아서 코딩하는게 직관적이다.
@Autowired
ResourceLoader resourceLoader;
@Override
public void run(ApplicationArguments args) throws Exception {
Resource resource = resourceLoader.getResource("classpath:test.txt");
System.out.println(resource.exists()); // 해당 리소스가 존재하는지 확인 true 존재
System.out.println(resource.getDescription());
// 자바 11버전
// Files.readString(Path.of(resource.getURI()));
}
}
바로 다음장인 Resource 추상화 시간에 자세히 다루겠습니다.
IoC 컨테이너 파트 후기
기존에 알고 있던 내용이더라도,
ApplicationContext의 핵심 기능들(IoC 컨테이너)에 대해 더 자세하고 깊게 알게 되었다.
또한 ApplicationContext가 가지고있는 부가 기능에 대해서도..
단순히 빈팩토리의 기능이 아니라
환경(Enviroment)-프로파일 및 프로퍼티
메세지 소스
리소스 로더 등
이런 여러가지 기능들을 가지고 있고, 단순한 빈 팩토리의 기능만 하는 것은 아니다. 라는걸 깨닫게 된 것 같다.
그리고 IoC와는 관계없지만 강의를 따라가면서 잠깐씩 해 주시는 스프링 관련 개념, 코딩 스타일(직관적),
또 혼자 직접 코드도 쳐 보고 직접 돌려보면서 스프링이 지향하는 비침투성, POJO에 대한 철학들을 조금은 느낄 수 있었던 것 같다.
(사실 인텔리J 이게 진짜 짱인거같다..)
솔직히 지금까지는 대충 아 이런건 이런 역할을 하고 그냥 주입해서 사용만 했는데,
빈의 라이프사이클이나 동작 원리 어떤 식으로 생성이 되고 스프링에서 기본 이런 메서드들을 지원해주고,
만약 이런 기능이 필요하면 이런 것들을 활용해서 (내가 모르던 스프링에서 지원해주는 기능) 구현이 가능하겠구나..
그리고 다른걸 떠나서
대학시절 프로젝트다 공모전이다 맨날 방학때는 밤도 새고 불타올랐던 개발에 대한 열정과 재미가 다시 피워진 것 같다.
3일 정도만에 입문 강의 완강하고 핵심 기술 이제 절반정도를 다 본 것 같은데 재미있게 공부하고 있다.
좋은 현상인것 같다! 취미로라도.. 아직도 너무 많이 남았지만 커리큘럼 끝나고 진행할 사이드 프로젝트 빨리 개발해보고 싶다~