자바생
article thumbnail
MapStruct
Spring 2022. 5. 30. 13:48

MapStruct java mapping framework는 여러 가지가 있다 대표적으로 MapStruct와 ModelMapper가 있는데, 대부분 MapStruct를 사용한다 아래는 구글 트렌드에서 캡처한 자료 그 이유는 “속도” 차이가 월등히 나기 때문이다 ModelMapper는 매핑이 일어날 때 리플렉션이 발생 MapStruct는 컴파일 시점에서 annotation을 읽어 구현체를 만들어내기 때문에 리플렉션이 발생하지 않는다 (리플렉션은 구글링!) modelmapper는 변환할 때마다 맵핑할 객체를 계속해서 만들어내고(런타임), mapstruct는 빌드 시점에 구현체를 하나 만들어서 계속해서 그 구현체를 사용하기 때문에(컴파일) mapstruct가 더 시간이 빠르지 않을까? 그렇다면 MapStruc..

article thumbnail
spring boot 2.6.x에 swagger 3.0 설정해보자(+수정 openapi 3.0 2022.05.30)
Spring 2022. 5. 11. 01:32

Swagger란? API 문서 자동화 open api api path, request, response 값 및 제약 조건 등을 문서화 파라미터를 넣어서 실제로 어떤 응답이 오는지 테스트 가능 Version spring boot 2.6.7 swagger 3.0 gradle 7.4.1 의존성 추가 implementation 'io.springfox:springfox-boot-starter:3.0.0' 기존 swagger 2.x 에서는 springfox-swagger-ui를 포함해줘야했다 하지만 3.x 부터는 stater에 해당 liberary가 모두 포함되어있다 Config 설정 @Configuration public class SwaggerConfig extends WebMvcConfigurationSup..

Filed Injection을 지양하자!
Spring 2022. 5. 2. 19:48

Spring에서 DI를 하는 방법에는 필드 주입, 생성자 주입, Setter 주입이 있다 intellij에서 필드 주입을 사용하면 “Field injection is not recommended” 요런 문구를 볼 수 있다 왜 필드 주입은 추천하지 않는 것일까? 왜 생성자 주입을 선호하는 것일까? 필드 주입의 단점 final 키워드를 붙일 수 없음 final은 선언 시 초기화를 해줘야하기 때문에 컴파일 에러 발생 따라서 immutable을 보장할 수 없음 @Autowired private final QuestionRepository questionRepository; //compile error spring 컨테이너 외부에서 사용할 수 없음 == spring에 종속적 순수 자바 코드(@SpringBootT..

article thumbnail
JSON 변환 시 지연로딩에 따른 InvalidDefinitionException 에러 해결
Spring 2022. 4. 17. 02:33

에러 발단 RestController에서 Answer를 반환하여 HttpMessageConverter가 JSON 형태로 변환시는 와중에 Answer와 Question의양방향 연관관계로 인해 "순환참조"가 발생했다. 그래서 굳이 필요하지 않은 answers에 @JsonIgnore를 붙여주었다 이제 순환참조는 해결됐다. 그러나 삭제하는 과정에서 Answer 객체를 반환할 때, 아래와 같은 에러가 발생했다 에러 전문 2022-04-17 01:21:29.446 ERROR 67772 --- [io-8080-exec-10] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with pa..

article thumbnail
HandlerMapping에서 order는 어디에 사용될까?
Spring 2022. 3. 11. 15:17

새싹 스터디 3주차 미션을 하다가 MVC 패턴에서 URI를 View에 쉽게 매핑하는 방법을 배웠다 예로 Form을 요청받을 때, 굳이 controller에서 매핑되는 메서드를 사용할 필요 없이WebMvcConfigurer를 사용하여 매핑을 해줄 수 있다. 하지만 코드 중에 setOrder라는 메서드를 사용했다. 오늘은 order는 어디에 사용되는지 알아보기 위해 글을 써보겠다! 해결해야 할 의문점 @Configuration public class MvcConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.setOrder(Ordered.LOWE..

728x90

검색 태그