Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 이것이자바다확인문제
- java
- 컴퓨터비전
- 백준10828
- 백준9012
- 카카오코테
- 운영체제
- 백준평범한배낭
- BOJ1655
- 코테
- BOJ
- KT포트포워딩
- 윤곽선검출
- 확인문제
- 백준
- 이것이자바다
- 백준가운데를말해요
- 딥러닝
- 스파르타코딩클럽
- 가운데를말해요
- 냅색알고리즘
- 2019카카오코테
- 웹개발기초
- 코드트리
- 백준스택
- 합성곱연산
- 이것이자바다9장
- 백준온라인저지
- 코딩테스트실력진단
- 백준괄호
Archives
- Today
- Total
코딩하는 락커
[Spring Boot를 이용한 RESTful Web Services 개발] 20~21강 본문
🍃 Spring/🌱 Spring Boot를 이용한 RESTful Web Service
[Spring Boot를 이용한 RESTful Web Services 개발] 20~21강
락꿈사 2022. 2. 8. 21:36다국어 처리를 위한 Internationalization 구현 방법
- 다국어 처리 : 하나의 출력값을 여러가지 언어로 표시해주는 기능
- 자동 번역은 아니고 제공하고자 하는 문자값을 미리 준비해놓고 지역코드 또는 언어설정에 따라 적절한 언어를 표시해 줌
- 프로젝트 전반에 걸쳐 적용할 것이므로 다국어 처리에 필요한 Bean을 스프링 부트 어플리케이션 클래스에 등록해서 스프링 부트가 초기화 될 때 메모리에 등록되도록 설정
- @SpringBootApplication 어노테이션을 갖고 있는 main 클래스에 코드 작성
// Bean 등록
@Bean
public LocaleResolver localeResolver(){
//SessionLocaleResolver 클래스는 세션을 통해서 로케일 값을 얻어옴
SessionLocaleResolver localeResolver = new SessionLocaleResolver();
//한국어 처리가 가본이 될 수 있게 DefaultLocale값을 Locale.KOREA로 지정
localeResolver.setDefaultLocale(Locale.KOREA);
return localeResolver;
}
- 다국어 처리를 하기 위해서 다국어 파일을 저장해야 함
- 사용할 다국어 파일명을 application.yml 파일에 지정
- basename을 messages로 지정했으므로 사용할 다국어 파일의 이름을 "messages"로 하겠음을 의미
spring:
messages:
basename: messages
- resources 패키지에 messages.properties 파일 생성
- properties 파일은 Java에서 key값과 value를 저장해놓고 사용하는 용도로 자주 씀
- 다국어 처리를 하기 위해 사용됨
greating.message=안녕하세요
- resources 패키지에 messages_fr.properties 파일 생성 (프랑스)
greating.message=Bonjour
- resources 패키지에 messages_en.properties 파일 생성 (영어)
greating.message=Hello
- HelloWorldController 클래스에 메소드 추가
// @RequestHeader 어노테이션과 매개변수로 Locale 변수를 넣어줌
// 다국어 처리를 하기 위한 메소드를 호출할 때 매개변수로 Request 헤더값에 원하는 다국어 지역 설정을 어떤 지역으로 할 것인지 받는 것
// 항상 지정될 필요는 없으므로 required = false
// 지정하지 않으면 default locale 값(kr)으로 지정
@GetMapping(path = "/hello-world-internationalized")
public String helloworldInternationalized(@RequestHeader(name="Accept-Language", required = false) Locale locale){
// 위에서 선언한 messageSource 인스턴스를 통해 메세지 가져옴
// 첫번째 매개변수는 만들었던 번들(porpeties 파일들)에서 어떤 키값을 가져올 것인지 지정하는 것
// 두번재 매개변수는 키값의 파라미터를 지정하는 것
// 세번째는 locale 값
return messageSource.getMessage("greating.message", null, locale);
}
- HelloWorldController에 메시지를 반환하기 위한 MessageSource 인스턴스 추가
- UserController를 사용할 때 UserDaoService를 사용했는데, 이때는 생성자를 통한 주입 사용.
- 의존성 주입 : 스프링 프레임워크가 개발자가 등록한 Bean을 사용하게 하기 위한 방법. 어노테이션을 통한 주입, 생성자를 통한 주입, setter() 메소드를 통한 주입 등이 있음
- @Autowired 어노테이션을 통해 의존성 주입. 현재 스프링 프레임워크에 등록되어 있는 Bean 중에서 같은 타입을 갖고 있는 Bean을 자동으로 어노테이션이 붙은 객체에 넣어줌
// message 값을 반환하기 위해 선언
@Autowired
private MessageSource messageSource;
- 이 때, 한글 깨짐을 방지하기 위해서 인텔리제이에서 인코딩을 utf-8로 변경해주어야 함
-
환경설정 인코딩 검색 -> 디폴드 인코딩 타입 변경
Response 데이터 형식 변환 (JSON -> XML)
- Header 정보로 Key를 Accept, Value를 application/xml로 지정하여 GET 요청하였는데, 이것은 API를 호출했을 때 xml 형태로 문서 반환을 받겠다는 것
- 정상적인 API이나 406 에러가 뜨고 Body에 아무것도 나타나지 않음
- 406 에러는 클라이언트가 서버측에서 준비되지 않은 요청을 했다는 에러
- pom.xml에 xml data를 처리를 위한 jackson dataformat dependency 추가
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.10.2</version>
</dependency>
'🍃 Spring > 🌱 Spring Boot를 이용한 RESTful Web Service' 카테고리의 다른 글
[Spring Boot를 이용한 RESTful Web Services 개발] 25~26강 (0) | 2022.02.09 |
---|---|
[Spring Boot를 이용한 RESTful Web Services 개발] 22~24강 (0) | 2022.02.09 |
[Spring Boot를 이용한 RESTful Web Services 개발] 18~19강 (0) | 2022.02.08 |
[Spring Boot를 이용한 RESTful Web Services 개발] 17강 (0) | 2022.02.07 |
[Spring Boot를 이용한 RESTful Web Services 개발] 16강 (0) | 2022.02.07 |
Comments