본문 바로가기

Back-End/Spring

(18)
Spring DataIntegrityViolationException 에러 org.springframework.dao.DataIntegrityViolationException 에러는 lower level persistence exception과 관련된 것이다. Hibernate와 관련된 exception 1. ConstraintViolationException 2. PropertyValueException 3. DataException : sql문이 잘못되거나 data가 잘못된 경우이다. JPA와 관련된 exception javax.persistence.EntityExistsException. https://www.baeldung.com/spring-dataIntegrityviolationexception
Lombok 사용하기 Intellij에 설정하기 : http://blog.egstep.com/java/2018/01/12/intellij-lombok/get/set 함수 너무 많아..
스프링 5에서 Reactive Programming 하기 (1) Reactive Programing 사용예시Reactive 환경에서 message-driven communication에 대한 이해는 필수다. Reactive Programming에 대한 이해를 위해 하나의 예시를 살펴보자. 마이크로서비스 패턴에서 게이트웨이 필수이기 때문에 예시에 포함시켰다. ( API Gateway, Service Registry에 대해 더 알고 싶다면 제 블로그의 Microservices 카테고리를 참고해주세요 ) 응답성(responsive)를 위해서, 주문이 접수되면 바로 response를 return하고 async로 payment service를 호출한다. 최종 notifcation은 메일을 통해 전송이 된다.
Spring IoC(제어의역전),DI(의존성주입)란? Spring IoC(제어의역전),DI(의존성주입)란?Spring으로 코딩하면서 IoC와 DI에 대한 용어를 자주 접하게 된다. @Autowired, @Bean 어노테이션 덕분에 객체 생성과 설정에 대한 걱정없이 우리는 편하게 작업을 해왔다. 하지만, 내부적으로 Spring Framework가 어떻게 돌아가는지 @Autowired,@Bean 어노테이션을 통해 얻는 장점이 무엇인지 제대로 공부하지 않았다. 이번 포스팅을 통해 Spring IoC,DI에 대해 제대로 알아보려 한다. 1. @Bean,@Component,@Service,@Controller,@Repository 도대체 뭐임?@Bean, @Component에 대해 알아보자.두가지 어노테이션은 스프링에 빈을 등록하기 위해 사용되는 어노테이션이다. @..
POJO(plain old java object)란? POJO(Plain old java object)란 무엇인가?스프링 개발을 하면서 POJO 프로그래밍이라는 용어를 자주 접한다. 이제까지 느낌적으로 특정 규약에 종속되지 않는 자바 객체 정도로 이해해왔다. 이 포스팅에서 POJO의 조건과 POJO 프로그래밍의 장점에 대해 예시를 통해 알아볼 것이다. POJO 개념을 사용하지 않은 예시 ( 특정 환경에 결합도가 높은 코드 ) JMS로부터 메시지를 받는 경우JMS를 사용하기 위해 MessageListener 인터페이스를 상속받아야 한다. 하지만, 다음과 같이 구현하면 JMS라는 특정 환경에 종속되게 되고 다른 메시징 솔루션을 적용하기 어려워 진다. 단순한 예제와 달리 Listener가 많은 경우, AMQP나 다른 솔루션으로 교체할 경우 더더욱 어려울 것이다...
Spring Boot와 Docker를 이용한 개발환경 구축하기 Spring Boot와 Docker를 이용한 개발환경 구축하기내가 겪은 문제점 - Development 환경과 Staging,Prod 환경의 차이로 인한 문제 발생Spring Boot 개발을 하다보면, Development 환경과 Prod 환경이 달라서 문제가 발생하는 경우가 있다. Service Discovery 역할을 하는 Eureka Server를 구축하면서 이 문제를 겪었다. Prod 환경에서의 Eureka 설정은 AWS config이고, Dev 환경에서의 Eureka 설정은 Local이기 때문에 개발 시점에서는 테스트를 해볼 수가 없었다. Twelve-Factor 방법론 중 Development/Production 환경을 최대한 비슷하게 하라는 얘기가 있다. 내가 겪은 문제점 2 - Remote..
Spring Boot 2.0 - 스프링 부트 기본 로깅 LoggingSpring boot의 소스는 기본으로 Commons Logging을 사용한다. 그리고 우리가 개발한 스프링 프로젝트는 기본으로 Logback을 사용한다. 다른 로깅툴을 사용해도 slf4j api로 라우팅 해주는 것이 포함되어 있어 다른 로킹 툴을 사용할 수 있다. 즉, logging dependency를 신경쓰지 않아도 된다. Log Format2014-03-05 10:57:51.112 INFO 45469 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/7.0.52 2014-03-05 10:57:51.253 INFO 45469 --- [ost-startStop-1] o.a...
RESTful 웹서비스 만들기 # 시작하기 전에 REST라 하면 서버-클라이언트 통신 방식정도로만 이해하고, RESTful한 웹 API라고 하면 정확히 이해할 수가 없었다. 웹 2.0으로 들어오면서 REST의 역할과 RESTful한 웹 API가 무엇인지 Spring을 통해 알아보았다. # 만들어 볼 예제 HTTP GET request를 받아 JSON으로 response하는 서비스를 만들 것이다. http://localhost:8080/greeting {"id":1,"content":"Hello, World!"} 1) POJO 생성 2) Resource Controller 생성 Spring의 RESTful 웹서비스에서는, 컨트롤러가 HTTP 요청을 처리한다. 이 컴포넌트들은 @RestController annotation에 의해 쉽게 ..