Web/Spring

    Error creating bean with name 'requestMappingHandlerMapping' defined in class path resource

    스프링 에러 메시지 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration': Unsatisfied dependency expressed through method 'setFilterChains' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'filterChain..

    DTO의 사용범위는 어디까지? 또, DTO 변환은 어디서?

    DTO의 사용범위는 어디까지? 또, DTO 변환은 어디서?

    전에 Controller와 Service 계층 간 데이터 전달을 어떻게 해야 좋을지에 대한 포스팅을 작성했었다. 뭔가 숲보다 나무를 먼저 본? 느낌이긴한데... 하하; 그때 배우던 예제에선 Service가 Entity를 반환했고, 또 Repository 는 DB단에 제일 가깝기 때문에, 단순히 DTO의 사용범위는 Controller에서 Service 계층까지-라고 생각했다. (그리고 tmi지만 파라미터와 반환타입 둘 다 고려해야 한다는 사실을 간과해서 뭔가 찝찝함이 남은 상태다..) 그런데 QueryDSL 학습 중.... @QueryProjection을 사용하면 DTO 가 Repository에서 생성되어서 Service에 반환되는데, Repository 계층까지 DTO가 들어와도 되나? 싶고 당황스러웠다..

    [Error] Update/delete queries cannot be typed

    [Error] Update/delete queries cannot be typed

    JPQL - EntityManager 로 쿼리 작성중 생긴 문제 update 또는 delete 쿼리를 작성할 수 없다 createQuery() 메서드의 매개변수로 들어가는 Query는 2가지 종류 1. Typed Query: 조회 대상과 반환형이 Entity인 쿼리 2. Query: 조회 대상과 반환형이 Entity가 아닌, 기본형 또는 Wrapper 클래스인 쿼리 update/delete 쿼리는 엔티티를 조회하지도, 반환하지도 않는다. 따라서 일반 쿼리문이므로 .class를 명시하지 않아야 함. 빼주면 해결된다

    테스트용 더미 데이터 넣기 (no entitymanager with actual transaction available for current thread)

    테스트용 더미 데이터 넣기 (no entitymanager with actual transaction available for current thread)

    문제원인 빈 생명주기 콜백 메서드를 사용해서 더미 데이터를 DB에 넣으려고 하니 에러가 뜬다. no entitymanager with actual transaction available for current thread 구글링을 해보니 @PostConstruct에는 직접적으로 @Transactional을 적용할 수 없다고 한다. 그래서 인프런 커뮤니티에 달린 글을 찾아봤는데 찾은 내용이 다음과 같다. @PostConstruct는 해당 빈 자체만 생성되었다고 가정하고 호출됩니다. 해당 빈에 관련된 AOP등을 포함한, 전체 스프링 애플리케이션 컨텍스트가 초기화 된 것을 의미하지는 않습니다. 트랜잭션을 처리하는 AOP등은 스프링의 후 처리기(post processer)가 완전히 동작을 끝내서, 스프링 애플리케..

    검증 - 직접구현부터 Spring Validation 까지

    오류 발생시 기본적으로 : 오류처리해야 하는 필드의 태그에는 class="field-error"를 붙인다 controller에서 폼에 빈 객체를 넘긴다.(Member) 이유는 여러가지가 있겠지만, 검증 실패시 이것을 재사용 할 수 있기 때문 검증에 실패하면 다시 입력 폼으로 보낸다. 1. 직접 처리 오류메시지가 하나라도 있으면 model에 Map(errors)를 담고 입력폼으로 보냄 StringUtils를 사용해서 if문으로 하나하나 조건을 달고 에러메시지를 담아줌. 필드에러: errors에 오류가 발생한 필드명(key), 오류(value) 저장 th:classappend="${errors?.containsKey('필드명')}?'field-error' : _" field-error라는 클래스 정보를 더해..

    spring-boot-devtools

    spring-boot-devtools

    공식문서: https://docs.spring.io/spring-boot/docs/current/reference/html/using.html#using.devtools 제공하는 기능: Hot Swapping (정적 리소스가 변경되어도 서버 재시작 없이 반영) H2 Console 자동 활성화 등등... Gradle 사용 시 build.gradle 설정 : developmentOnly("org.springframework.boot:spring-boot-devtools") applicatoin.propeties 설정 : spring.thymeleaf.cache=false spring.devtools.remote.restart.enabled=true 타임리프 사용 중이므로 윗 줄도 들어갔습니다. Intelli..