본문 바로가기

전체 글

(16)
[스프링부트] MessageSource를 이용한 다국어 관리 이 글은 오늘 배운 내용을 정리하는 블로그 글 입니다. 오늘은 스프링부트에서 MessageSource를 이용해서 다국어 관리하는 법을 알아보겠습니다. MessageSource를 이용하면 resource 파일에 저장된 값을 가져와서 보여줄 수 있습니다. 저희는 resource 파일을 Locale 별로 만들어서 관리할 수 있는데, MessageSource에서 메시지를 가져올 때 Locale 값을 넣어주면 그에 맞는 resource 파일에서 메시지를 가져오게 됩니다. 코드로 한번 보겠습니다. 예제에서는 간단한게 "hi" 라는 message에 대해서 영어, 한국어, 일본어로 표시해 보겠습니다. Resource 파일 등록 먼저 메시지 정보를 담을 리소스 파일을 만들어 보겠습니다. 파일명은 'messages.pro..
[스프링부트] 이벤트 발행 및 구독 이 글은 오늘 배운 내용을 정리하는 블로그 글 입니다. 오늘은 스프링에서 간단하게 이벤트를 발행하고 구독하는 방법에 대해서 알아보겠습니다. 간단하게 시나리오는 아래와 같습니다. "글 작성이 완료되면 '작성완료' 라는 이벤트를 발행한다" 이벤트 클래스 만들기 우선 이벤트를 만들어야 합니다. 이벤트는 별도의 스프링 프레임워크를 사용하지 않고, POJO 클래스로 구현하면 됩니다. 클래스명과 변수는 아래와 같이 하겠습니다. - 클래스 명: WriteCompletedEvent - 변수 명 - Object source: 소스 정보 - int writingNumber: 글 번호 (임의로 넣어본 값이며, 여기에 관리하실 값들을 넣어주시면 됩니다) 소스 코드는 아래와 같습니다. public class WriteCompl..
[스프링부트] H2 DB 설치 및 사용 이 글은 오늘 배운 내용을 정리하는 블로그 글 입니다. 오늘은 H2 DB를 파일모드로 사용하는 방법에 대해서 알아보겠습니다. H2 DB는 파일모드로 사용할 수도 있고, 메모리 모드로 사용할 수 도 있습니다. 메모리 모드로 할 경우에는 테스트에서 사용하기가 좋습니다. 스프링부트에서 별도 설치없이 의존성만 추가하면 바로 사용할 수 있고, 메모리에서 실행되기 때문에 프로그램이 시작될 때 데이터가 모두 초기화 됩니다. 파일모드로 하려면 H2 DB를 다운받고 실행해주는 과정이 필요합니다. H2 DB 다운로드 받기 먼저 H2 DB 홈페이지 (https://www.h2database.com/html/main.html) 에 방문해서 파일을 다운로드 받아야 합니다. 'Download' 메뉴로 들어가서 '1.4.199 -..
[스프링 부트] Test 이후 롤백(Rollback) 하지 않기 이 글은 오늘 배운 내용을 정리하는 블로그 글 입니다. 스프링부트에서 테스트 코드를 작성할 때, 테스트 이후에 롤백을 하지 않는 방법에 대해서 알아보겠습니다. 우선 예제 코드를 보겠습니다. @Test public void Member_Join() throws Exception { // given Member member = new Member(); member.setName("youngchulshin"); // when Long savedId = memberService.join(member); // then Assert.assertEquals(member, memberRepository.findOne(savedId)); } 위 코드는 회원 가입이 정상적으로 동작하는지 검증하는 테스트 코드입니다. whe..
[스프링 부트] 서버를 재시작하지 않고 View 갱신하기 (devtools) 이 글은 오늘 배운 내용을 정리하는 블로그 글 입니다. 스프링 부트에서 서버를 재시작하지 않고 View의 변경 사항을 갱신하는 방법에 대해서 알아보겠습니다. 우선 접속하면 접속자의 이름을 보여주는 간단한 페이지를 만들었습니다. 소스코드는 아래와 같습니다. IndexController @Controller public class IndexController { @GetMapping("/") public String index(Model model) { model.addAttribute("name", "신영철"); return "index"; } } index.html (thymeleaf) 반갑습니다. 만약 서버가 실행중인 상태에서, 'IndexController'에 있는 '신영철' 이라는 이름을 '게스트'..
[스프링 부트] 의존성 확인하기 이 글은 오늘 배운 내용을 정리하는 블로그 글 입니다. 스프링부트에서 사용하는 라이브러리의 의존성을 확인하는 방법입니다. 1. Terminal에서 확인 Terminal에서 스프링부트 프로젝트가 있는 경로로 이동합니다. 아래 명령어를 입력하면 의존성을 확인할 수 있습니다. ./gradlew dependencies 2. 인텔리제이 IDEA에서 확인 인텔리제이에서는 'IDEA' 우측에서 탭에서 확인이 가능합니다. 아무래도 Terminal 보다는 IDEA가 보기 편합니다.
[스프링 부트] 프로젝트 시작하기 (Spring initializr) 이 글은 오늘 배운 내용을 정리하는 블로그 글 입니다. 스프링부트 프로젝트를 처음 시작할 때 'Spring Initializr' 를 이용해서 시작하는 방법을 알아보겠습니다. IDE는 인텔리제이를 이용합니다. 먼저 Spring Initializr 사이트('https://start.spring.io/')를 접속합니다. 프로젝트에 필요한 정보를 설정합니다. Project: 빌드 시스템을 선택합니다. (요즘은 Gradle을 많이 사용합니다) Language: 사용 언어를 선택합니다. Spring Boot: 스프링 부트 버전을 선택합니다. Project Metadata: Group ID와 Artifact ID를 입력합니다. (Artifact ID는 프로젝트의 이름이 됩니다) Dependencies: 프로젝트에서 ..
피플웨어 제목: 피플웨어 저자: 톰 드마르코, 티모시 리스터 공저 페이지: 319p 예전부터 독서 리스트에 올려두고 '언젠가 읽어야지..' 라고 생각만 했던 책인데, 2020년 완독하는 첫번재 책이 되었다. 책에서 중심을 두고 말하는 것은 '사람'에 대한 이야기다. 프로젝트가 실패하는데에는 기술적인 문제도 있지만, 사회학적인 문제가 더 크다는 내용에 대해서 공감하는가? 이 책에서는 이런 내용에 대해서 설명을 하고 있다. 우리가 관찰한 프로젝트 중 대략 15%는 실패로 끝났다. (연인원 25명 이상의 경우는 25%) 우리가 연구한 망한 프로젝트 중 압도적인 대다수에는 실패 원인으로 꼽을 만한 기술적인 문제가 하나도 없었다. 우리 업무에서 주요 문제는 본질적으로 기술적인 문제가 아니라 사회학적인 문제다. 흔히 관리자..