(4) 2장_스프링 코어(DI, AOP) - Resource 추상화, Message 관리
2021. 3. 25. 11:32ㆍ개발공부/스프링 철저 입문
728x90
2장의 마지막 개념 Resource 추상화와 Message 관리입니다. 제 생각엔 중심 개념은 아니지만 사용하면 편리한 라이브러리여서 알아두면 좋을 것 같습니다.
Resource 추상화
애플리케이션을 개발할 때 디렉터리나 war 파일, jar 파일 등 이러한 리소스의 위치를 모두 알고 접근해야 하지만 리소스 추상화 기능을 활용하면 구체적인 위치 정보를 직접 다루지 않아도 리소스에 접근할 수 있게 됩니다. classpath를 관리합니다.
Resource 인터페이스의 구현 클래스(UrlResource)를 통해 웹 리소스 가져오기
1
2
3
4
5
6
7
8
|
public void accessResource() throws IOException {
Resource greetingResource =
new UrlResource("http://localhost:8080/myApp/greeting.json");
try (InputStream in = greetingResource.getInputStream()) {
String content = StreamUtils.copyToString(in, StandardCharsets.UTF_8);
System.out.println(content);
}
} |
cs |
참고로 WritableResource 인터페이스의 구현 클래스는 파일 시스템에 쓰는 기능을 지원하는데 AWS S3 파일 로드와 쓰기가 가능한 기능(Inputstream, Outputstream)도 제공합니다.
메시지 관리
중복되는 메시지를 프로퍼티 파일에 따로 관리합니다. 필요할 때 꺼내쓸 수 있습니다.
MessageSource 정의
1
2
3
4
5
6
7
8
9
|
@Bean
//DI에 Bean ID가 messageSource가 되도록 정의하는 것이 중요합니다.
public MessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
//classpath 상에 있는 프로퍼티 파일의 이름을 확장자를 제외하고 지정합니다.
messageSource.setBasenames("messages");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
|
cs |
메시지 가져올 때 MessageSourceResolvable 클래스 활용
1
2
3
4
5
6
7
8
|
public void printWelcomeMessage() {
MessageSourceResolvable functionName =
new DefaultMessageSourceResolvable("functionName.userName");
String message = messageSource.getMessage("welcome.message"
, new MessageSourceResolvable [] {functionName}
, Locale.KOREAN);
System.out.println(message);
}
|
cs |
MessageSourceResolvable : 메시지 인수(factor)를 할당해줍니다.
getMessage() : 메시지 내용, 인수(factor)값, 언어(Locale)을 받고 String으로 반환해줍니다.
프로퍼티(.properties) 파일
1
2
|
welcome.message={0}님, 환영합니다!
functionName.userName=사용자
|
cs |
출처 : 스프링 철저 입문
참고자료 :
'개발공부 > 스프링 철저 입문' 카테고리의 다른 글
(3) 2장_스프링 코어(DI, AOP) - AOP, SpEL (0) | 2021.03.22 |
---|---|
(2) 2장_스프링 코어(DI, AOP) - Bean 스코프, Profile (0) | 2021.03.18 |
(1) 2장_스프링 코어(DI,AOP) - Bean설정과 의존성 주입 (0) | 2021.03.15 |