개발/Spring 30

[Spring 프로젝트] Spring Boot에서 타임리프(Thymeleaf) 사용하기

Spring Spring Boot에서 타임리프(Thymeleaf) 사용하기 Spring Boot에서 타임리프를 사용하기 위해 타임리프가 무엇인지, 그리고 기본적으로 알아야 하는 타임리프의 속성이나 주요 식(expression)을 알아보자. 그리고 스프링 부트와 타임리프를 연동하려면 어떤 것을 해야 하는지에 알아보자. 타임리프(thymeleaf) 란? 타임리프(Thymeleaf)는 템플릿 엔진이다. 타임리프는 웹을 염두하고 설계해서 HTML 템플릿을 만들 때 적합합니다. 또한 자바 스크립트와 CSS에 적합한 템플릿 도 만들 수 있습니다. 다음은 타임리프가 제공하는 문법을 사용해서 작성한 템플릿의 예시 입니다. 환영합니다. [회원 가입하기] [로그인] 님, 환영합니다. [비밀번호 변경] [로그아웃] th:t..

개발/Spring 2020.11.12

[Spring 프로젝트] Spring에서 트랜잭션 사용하기

Spring에서 트랜잭션 사용하기 해당 문서는 Spring Boot 프로젝트에서 트랜젝션을 설정하여 롤백하는 방법에 대해 가이드한 문서입니다. 트랜잭션이란 트랜잭션이란 두 개 이상의 쿼리를 한 작업으로 실행해야 할 때 사용하는 것으로 어떤 쿼리를 논리적으로 하나의 작업으로 묶어줄 필요가 있을 때 사용합니다. 한 트랜잭션으로 묶인 쿼리 중, 하나라도 실패하면 전체 쿼리를 실패로 간주하고 실패 이전에 실행한 쿼리를 취소합니다. 이렇게 쿼리 실행 결과를 취소하고 DB를 기존 상태로 되돌리는 것을 롤백(rollback)이라고 부릅니다. 아래 예시에서는 유저가 회원가입을 할 때, 유저 정보를 DB에 넣고 나서 이메일을 전송하는 과정에서 Exception이 발생했을 경우, Transaction을 통해 자동으로 롤백..

개발/Spring 2020.11.11

[Spring 프로젝트] Swagger 연동하기

Spring Boot - Swagger 사용하기 해당 문서는 Spring Boot 프로젝트에서 Swagger를 연동한 방법에 대한 가이드 입니다. Swagger란 간단한 설정을 통해 프로젝트에서 지정한 URL들을 HTML 화면으로 보여주는 툴 입니다. API Spec 문서를 자동화 하여 개발자간 협업 및 사용자에게 공유하기 위해 사용합니다. Swagger 연동하기 Gradle에 Swagger Depenncy 추가 compile group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2' compile group: 'io.springfox', name: 'springfox-swagg..

개발/Spring 2020.11.11

[Spring 프로젝트] Spring AOP 로거 개발 가이드

Spring AOP Logger 해당 문서는 Spring 프로젝트 팀원들에게 AOP를 사용하는 방법과 AOP를 이용하여 추가한 Request Log를 어떻게 개발하는지 설명하기 위한 가이드 문서입니다. AOP란 AOP는 Aspect Oriented Programming의 약자로, 여러 객체에 공통으로 적용할 수 있는 기능을 분리해서 재사용성을 높여주는 프로그래밍입니다. Spring에서는 주로 Logging, Caching, Auditing, Perfomance monitoring 등에 주로 사용되며, 런타임 시에 프록시 객체를 생성하여 공통 기능을 삽입하는 방식으로 동작합니다. AOP 주요 용어와 어노테이션 Aspect: 여러 객체에 공통으로 적용되는 기능. 트랜젝션, 보안 등 Advice: 언제 공통로..

개발/Spring 2020.11.09

[Spring DI] 4. getBean() 메서드 사용과 Bean 관련 Exception 정리

Spring getBean() 메서드 사용과 Bean 관련 Exception 정리 NoSuchBeanDefinitionException: No bean named 'versionPrint2' available NoSuchBeanDefinitionException: No qualifying bean of type 'spring.MemberPrinter' available BeanNotOfRequiredTypeException getBean() 메서드 사용과 Bean관련 Exception 정리 앞에서 Bean 객체를 구할 때에는 getBean()메서드를 이용했다. (혹은 Autowired를 통해 자동으로 빈 객체를 받아왔다.) Autowired를 사용해도 내부적으로 Bean 객체를 호출하며 아래와 같이 No..

개발/Spring 2020.11.08

[Spring DI] 3. Spring에서 두 개 이상의 설정 파일 사용하기

Spring Spring에서 두 개 이상 설정 파일 사용하기 앞의 포스터에서는 DI가 무엇인지, DI를 왜 사용해야 하는지 그리고 Spring에서는 어떤 식으로 DI를 사용하는지에 관해 알아보았다. 이번에는 Spring에서 두 개 이상의 설정 파일을 사용하는 방법을 알아보자. 두 개 이상의 설정 파일 사용하기 스프링은 어플리케이션을 개발하다 보면 적게는 수십 개에서 많게는 수백여 개 이상의 빈을 설정하게 된다. 설정하는 빈의 개수가 증가하면 한 개의 클래스 파일에 설정하는 것보다 영역 별로 설정 파일을 나누면 관리하기가 편해진다. 스프링은 한 개 이상의 설정 파일을 이용해서 컨테이너를 생성할 수 있다. @Configuration public class AppConf1 { @Bean public Membe..

개발/Spring 2020.11.08

[Spring DI] 2. Spring DI 설정

Spring Spring DI 설정 Spring에서 DI를 설정하는 방법과 @Configuration, @Bean 어노테이션에 대해 공부해보자. 그리고 @Configuration 설정과 @Bean의 싱글톤 객체에 관해 알아보자. Spring에서의 DI 설정 앞에서 스프링은 객체 조립기와 같은 DI 역할을 수행한다고 말했다. 그러면 Spring이 DI를 해줄 수 있도록 설정하려면 어떻게 해야할까? 먼저 스프링이 어떤 객체를 생성하고, 의존을 어떻게 주입할 것인지를 정의한 설정 정보를 작성해야 한다. 아래 예시를 살펴보자. @Configuration public class AppCtx { @Bean public MemberDao memberDao() { return new MemberDao(); } @Bea..

개발/Spring 2020.11.08

[Spring DI] 1. 스프링 DI(Dependency Injection)란?

Spring 스프링 DI(Dependency Injection)란? 스프링을 사용하다보면 @Configuration, @Bean, @Autowired, @Qualifier 등을 많이 볼 수 있다. 각각 어떤 역할을 하는지, DI는 무엇이고 왜 DI를사용해야 하는 것인지를 알아보자. 스프링 DI란? DI란 'Dependency Injection'의 약자로 '의존 주입'이라고 한다. 여기서 의존이란, 한 클래스가 다른 클래스의 메서드를 실행 하는 것을 말한다. 만약 MemberRegisterService에서 MemberDao를 사용하여 DB에 접근한다면, 이 때 MemberRegisterService는 MemberDao 클래스에 의존한다고 표현한다. 일반적으로 우리가 객체를 사용할 때에는, 아래와 같이 객체..

개발/Spring 2020.11.08

[Spring 프로젝트] 예외 처리 가이드

예외 처리 가이드 해당 문서는 Spring 프로젝트 팀원들과 Exception 처리 로직을 공통화 하기 위해 작성된 가이드입니다. 예외 처리 시 해야 할 사항은 다음과 같습니다. ResultCode 작성 Exception 파일 생성 (혹은 기존 파일 사용) GlobalExceptionHandler에 ExceptionHandler 추가 1. ResultCode 작성 아래 ResultCode에 어떤 에러/결과인지 추가합니다. (Network/ResultCode.java) 해당 Status와 Code, Message 내용은 ResponseEntity내에 포함되어 서비스 결과를 반환할 때 사용됩니다. 이후 ResultCode가 늘어 한 파일에서 관리하기 어려울 경우 각 모듈 별로 코드를 따로 관리할 수 있습니다..

개발/Spring 2020.11.06

[Spring 프로젝트] 개발 가이드

개발 가이드 해당 문서는 Spring 프로젝트 팀원들과 개발 관련 형식(Pull Request, Commit 등)을 맞추기 위한 가이드 문서입니다. Pull Request 가이드 PR을 날릴 때에는 코드리뷰에 용이하도록 모듈/기능별로 쪼개서 하도록 합니다. 코드리뷰를 봐주는 사람들이 로직을 전부 이해하고 있지 않으므로 각 서비스를 왜 추가했는지, 어떤 용도로 사용하는 것인지 간단하게라도 작성해주시면 좋습니다. 코드리뷰는 프로젝트 팀원들이 모인 토요일에 모여서 확인하고 리뷰를 하고 각 기능별 브랜치에서 master로 머지합니다. 즉, 모임 시간 이전까지는 개발을 마치고 PR을 날리고 와주세요. 어차피 출시를 위해서 달리고 있는 것도 아니라 개발한 기능이 별로 없더라도 상관 없습니다. (리뷰어들은 오히려 좋..

개발/Spring 2020.11.06