{"componentChunkName":"component---src-templates-blog-post-js","path":"/springboot/스프링-부트-message-source를-활용한-exception-처리/","result":{"data":{"site":{"siteMetadata":{"title":"Bottlehs Tech Blog","description":"웹·앱·AI 개발자 전병훈(bottlehs)의 기술 블로그. AI·LLM, JavaScript·Vue, Spring Boot, 알고리즘, 블록체인 실무 가이드를 다룹니다","siteUrl":"https://www.bottlehs.dev","author":{"name":"Jeon Byung Hun","summary":"개발을 즐기는 bottlehs - Engineer, MS, AI, FE, BE, OS, IOT, Blockchain, 설계, 테스트"},"social":{"github":"bottlehs","codepen":"bottlehs"}}},"markdownRemark":{"id":"4d00e537-8791-55dc-99f7-89b475deb81e","excerpt":"스프링 부트 MessageSource를 활용한 Exception 처리 MessageSource란 ApplicationContext는 다양한 기능을 상속하고 있다, 그중 MessageSource는 다국어 처리를 할 때 사용되는 객체이다. 간단한 예제로 MessageSource…","html":"<p><img src=\"/assets/springboot.png\" alt=\"스프링 부트 MessageSource를 활용한 Exception 처리\" title=\"스프링 부트 MessageSource를 활용한 Exception 처리\"></p>\n<h2 id=\"messagesource란\" style=\"position:relative;\"><a href=\"#messagesource%EB%9E%80\" aria-label=\"messagesource란 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>MessageSource란</h2>\n<p>ApplicationContext는 다양한 기능을 상속하고 있다, 그중 MessageSource는 다국어 처리를 할 때 사용되는 객체이다. 간단한 예제로 MessageSource의 사용 방법을 알아보도록 하자</p>\n<p>스프링 부트를 사용한다면 별다른 설정 필요없이 messages.properties 로 정의하면 된다.\nresources 폴더에 다음과 같이 messages.properties, messages<em>ko</em>KR.properties, messages<em>en</em>US.properties 를 생성합니다.\nmessages.properties 는 기본 properties 이다.</p>\n<p><img src=\"/assets/springboot-message-source.png\" alt=\"스프링 부트 MessageSource\" title=\"스프링 부트 MessageSource\"></p>\n<p>messages<em>ko</em>KR.properties</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">hello=안녕</code></pre></div>\n<p>messages<em>en</em>US.properties</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">hello=hello</code></pre></div>\n<p>아래 처럼 넘어온 argument 를 바인딩 할수도 있다.</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">hello=hello {0} // hello human</code></pre></div>\n<p>메세지를 출력하기 위해 MessageSource를 AppRunner에 주입하고 messageSource의 getMessage를 호출할 때 서로 다른 Locale을 넣어 준다.</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token annotation punctuation\">@Component</span>\n<span class=\"token keyword\">public</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">AppRunner</span> <span class=\"token keyword\">implements</span> <span class=\"token class-name\">ApplicationRunner</span> <span class=\"token punctuation\">{</span>\n\n    <span class=\"token annotation punctuation\">@Autowired</span>\n    <span class=\"token class-name\">MessageSource</span> messageSource<span class=\"token punctuation\">;</span>\n\n    <span class=\"token annotation punctuation\">@Override</span>\n    <span class=\"token keyword\">public</span> <span class=\"token keyword\">void</span> <span class=\"token function\">run</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">ApplicationArguments</span> args<span class=\"token punctuation\">)</span> <span class=\"token keyword\">throws</span> <span class=\"token class-name\">Exception</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span>messageSource<span class=\"token punctuation\">.</span><span class=\"token function\">getMessage</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"greeting\"</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">String</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">{</span><span class=\"token string\">\"riverandeye\"</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span> <span class=\"token class-name\">Locale</span><span class=\"token punctuation\">.</span><span class=\"token constant\">KOREAN</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span>messageSource<span class=\"token punctuation\">.</span><span class=\"token function\">getMessage</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"greeting\"</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">String</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">{</span><span class=\"token string\">\"riverandeye\"</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span> <span class=\"token class-name\">Locale</span><span class=\"token punctuation\">.</span><span class=\"token constant\">US</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">Locale</span><span class=\"token punctuation\">.</span><span class=\"token function\">getDefault</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>","tableOfContents":"<ul>\n<li><a href=\"/springboot/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B6%80%ED%8A%B8-message-source%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-exception-%EC%B2%98%EB%A6%AC/#messagesource%EB%9E%80\">MessageSource란</a></li>\n</ul>","wordCount":{"words":79},"fields":{"slug":"/springboot/스프링-부트-message-source를-활용한-exception-처리/","image":"/assets/springboot.png","faq":[]},"frontmatter":{"title":"스프링 부트 MessageSource를 활용한 Exception 처리","date":"2021년 4월 8일","dateISO":"2021-04-08T21:59:29.537Z","updatedISO":null,"category":"springboot","description":"ApplicationContext는 다양한 기능을 상속하고 있다, 그중 MessageSource는 다국어 처리를 할 때 사용되는 객체이다. 스프링 부트를 사용한다면 별다른 설정 필요없이 messages.properties 로 정의하면 된다.","tags":["스프링","스프링부트","Spring","SpringBoot","Java","프레임워크","스프링부트구조","아키텍쳐","MessageSource"]}}},"pageContext":{"slug":"/springboot/스프링-부트-message-source를-활용한-exception-처리/","previous":{"fields":{"slug":"/springboot/스프링-부트-controller-advice를-활용한-exception-처리/"},"frontmatter":{"title":"스프링 부트 ControllerAdvice를 활용한 Exception 처리","tags":["스프링","스프링부트","Spring","SpringBoot","Java","프레임워크","스프링부트구조","아키텍쳐","ControllerAdvice"]}},"next":{"fields":{"slug":"/springboot/스프링-부트-spring-security를-활용한-인증-및-권한부여/"},"frontmatter":{"title":"스프링 부트 Spring Security를 활용한 인증 및 권한부여","tags":["스프링","스프링부트","Spring","SpringBoot","Java","프레임워크","스프링부트구조","아키텍쳐","Spring Security"]}}}},"staticQueryHashes":["213619243","3262363727"]}