전체 글
-
Spring Web immutable Parameter카테고리 없음 2023. 4. 23. 14:05
오늘은 Web immutable Parameter Object에 대해서 알아보도록 하자. 요즘에는 immutable Object를 많이 사용하는 듯 하다. 아마도 가장 좋은점은 스레드 세이프하다는 장점이 있어야 일 것이다. 그래서 오늘 Spring web과 관련해서 immutable 한 Parameter에 대해서 알아보도록 하자. 요즘은 코틀린으로 Spring 개발을 많이 하고 있고 Spring 에서도 코틀린을 거의 완벽히 지원해주고 있다. 또한 java에서는 lombok도 많이 사용하고 있으니 괜찮다면 한번 살펴보는 것도 나쁘지 않다. @ModelAttribute Spring5 부터는 @ModelAttribute도 불변의 Object도 사용가능하다. 아마도 코틀린을 지원하면서 고려가 많이 된 것 같다...
-
Spring boot 2.1 의@WebMvcTest카테고리 없음 2023. 4. 23. 14:05
오늘 이야기할 내용은 Spring boot 2.1의 @WebMvcTest 어노테이션에 대해서 살펴볼텐데 기존의 @WebMvcTest과 조금 다른 부분이 있어 그것에 대해 알아보도록 하자. 만약 Spring boot 2.0 혹은 그 이전 버전에서 Spring boot 2.1로 버전을 올린다면 함께 봐야 할 수도 있다. 물론 그 상황이 라면? 필자도 Spring boot 2.0 에서 2.1로 올렸을 때 발생한 이슈였다. 2.0에서는 문제 없이 잘 실행 되었지만 2.1로 버전을 올렸더니 갑자기 테스트 케이스들이 실패하였다. 그래서 그 이유가 무엇인지 찾아보기 시작했다. 일단 어떤 경우에 이런 현상이 나오는지 코드로 살펴보도록 하자. 이 코드는 단지 예제일 뿐이다. @Configuration public cla..
-
Spring 의 @ControllerAdvice카테고리 없음 2023. 4. 23. 14:05
오늘은 Spring의 @ControllerAdvice 어노테이션에 대해서 알아보도록 하자. 많은 내용은 아니지만 이런기능도 있으니 한번 살펴보도록 하자. 대부분이 Spring 을 사용할 때 @ControllerAdvice를 글로벌 예외처리기로 사용한다. 하지만 @ControllerAdvice 어노테이션은 예외처리기만을 위한 것은 아니다. 아마도 예외처리기로 사용할 때가 많아서 대부분이 예외처리로 사용할 뿐이다. 구글에 @ControllerAdvice을 검색을 해보면 Exception 처리만 수두룩하다. 뭐 틀린말은 아니다. 예외처리로만 사용해도 문제는 없다. 하지만 예외처리뿐만 아니라 다용도로 사용할 수 있으니 알면 좋을 것 같아서 포스팅을 해본다. 흔히 사용하는 예외처리 @ExceptionHandler..
-
Spring boot Properties카테고리 없음 2023. 4. 23. 14:05
오늘은 Spring boot properties에 대해서 이야기 해보도록 하자. Spring boot 에는 다양한 설정파일을 제공하고 있다. .properties, .yaml 파일뿐만 아니라 다른 여러방법도 존재한다. 이것뿐만 아니라 우선순위 등 잘 사용하는 방법을 알아보도록 하자. Random properties에 random 함수를 사용할 수 있다. 실제로는 자주 사용하지는 않겠지만 테스트할 경우에는 유용할 수 있는 랜덤함수이다. 하지만 필자도 한번도 사용한적이 없다는.. int, long, uuid, 원하는 범위의 int 등으로 설정할 수 있다. name=${random.int} name=${random.long} name=${random.value} name=${random.int(10)} nam..
-
JPA 까먹지 말자! (2)카테고리 없음 2023. 4. 23. 14:05
오늘은 저번시간에 이어서 JPA 까먹지 말자! (2) 를 시작해보자. JPA라 했지만 구현체는 hibernate 기준으로 설명하니 다른 구현체들은 조금씩 다를 수도 있으니 참고하면 되겠다. 또한 종종 hibernate 이야기도 있을 수도 있다. @GeneratedValue strategy JPA에서는 @GeneratedValue 어노테이션의 strategy 속성으로 기본키 전략을 설정할 수 있다. 물론 직접 기본키를 생성해주는 것도 좋지만 그보다는 자동생성 전략도 나쁘지 않게 생각된다. 필요하다면 비지니스 키를 따로 만들어서 직접 생성해주는 방법도 생각해 볼 수 있다. JPA에서는 기본키의 전략이 3가지가 있다. TABLE, SEQUENCE, IDENTITY 전략이다. AUTO 전략도 있지만 AUTO는 ..
-
Jpa 까먹지 말자.카테고리 없음 2023. 4. 23. 14:05
오늘은 필자가 자주 까먹거나 기억을 하지 못하는 부분들을 좀 정리좀 해보려고 한다. JPA는 자주 기억이 안난다. 이상하게 사용하고 있을 때는 기억이 나지만 또 사용하지 않으면 기억이 안난다. 뭐 원래 그런건가? 아무튼 오늘 한번 자주 기억이 나지 않는 부분을 정리해보자. LAZY, EAGER Jpa 에서는 LAZY 로딩과 EAGER 로딩이 존재한다. LAZY 로딩일 경우에는 쿼리를 날리지 않고 해당 객체를 사용하는 시점에 쿼리가 나간다. EAGER 로딩일 경우에는 처음 부터 쿼리를 모두 날린다. public class Account { @OneToMany(mappedBy = "account", fetch = FetchType.LAZY) private List orders; } Account의 모든 리스..
-
Spring Controller 파라미터 타입 (2)카테고리 없음 2023. 4. 23. 14:05
오늘은 예전에 작성했던 Spring Controller 파라미터 타입 에 이어서 두번째 시간을 가져보도록 하자. Spring webmvc 뿐만아니라 다른 프로젝트에서도 다양한 파라미터 타입을 지원주고 있으니 web 뿐아니라 다른 프로젝트에서도 어떤 파라미터를 지원하고 있는지 알아보도록 하자. webmvc 일단 먼저 Spring mvc 부터 시작하자. 저번에 대부분 spring webmvc에 관련해서 이야기했으나 그래도 많은 부분은 이야기 하지 못했다. 많지는 않지만 몇가지 추가적으로 sprig mvc 파라미터 타입을 살펴보자. @Value @Value 어노테이션을 파라미터 타입에 작성할 수 있다. 흠 글쎄다. Value 어노테이션을 굳이 파라미터에 작성할 이유가 있나 싶기도 하지만 지원은 해주고 있으니...
-
lombok을 잘써보자! (3)카테고리 없음 2023. 4. 23. 14:05
오늘은 예전에 lombok을 잘써보자! 시리즈에서 조금 추가된 내용을 써보려고 한다. lombok 버전도 올라가면서 새로 추가된 어노테이션도 있고 놓쳤던 부분도 있을 수 있어 좀 더 추가하여 내용을 이어가보자. 참고로 지금 필자가 lombok 을 사용하는 버전은 1.18.2 버전이다. 지금 현재까지 나온 버전은 1.18.4 버전으로 알고 있다. lombok을 잘써보자! (1) lombok을 잘써보자! (2) @Value Value 어노테이션이다. 이것은 불변을 의미한다. 아주 간단하게 클래스 레벨에 @Value 어노테이션만 선언하면 사용할 수 있다. 코드를 보면서 살펴보도록 하자. @Value public class ValueExample { String name; String email; } 기본적으로..