본문 바로가기

전체 글102

Spring Security 동작 및 구조에 대한 심화 학습 최근에 Spring Security를 구현하고 있는데, 기존의 Form 방식이 아니며, JWT 토큰을 사용하지 않고 REST API + 자동로그인을 구현하면서 실제로 어떤 클래스들이 동작하는지 그리고 구조를 더 이해하기 위해서 공부를 하는 겸 Spring Security 에 대해 추가적으로 포스팅합니다. 기본적인 동작구조는 아래 링크에 작성은 해뒀습니다. https://awse2050.tistory.com/98?category=882914 Spring Security 동작 과정 JWT를 사용하기 전 여러모로 깨우친게 생겨서 추가로 정리하게 되었다. Spring Security 기반으로 JWT 를 사용하려면 Security 구현체를 직접 구현시켜서 사용해야 하기 때문에 어느정도 알 필요는 있다. awse2.. 2022. 9. 6.
querydsl 단 건 조회시 firstResult/maxResults specified with collection fetch; applying in memory! Querydsl private Member getMember(Long memberId) { return jpaQueryFactory .selectFrom(member).distinct() .leftJoin(member.groupMember, groupMember).fetchJoin() .leftJoin(groupMember.group, group).fetchJoin() .where(member.id.eq(memberId)) .fetchFirst(); } Member Entity의 코드이다. // Member.class @Column(name = "email", nullable = false, unique = true) private String email; @Column(name = "name", nul.. 2022. 9. 2.
멀티 모듈 프로젝트 - No bean named 'entityManagerFactory' available No bean named 'entityManagerFactory' available 멀티 모듈로 구성을 하면서 해당 문제가 발생했다. 말 그대로 entityManagerFactory 의 Bean 을 사용할 수 없다는 것이다. moinda-core 패키지에서 JPA 의존성을 직접 사용하는 구조로 되어 있으며 moinda-api 패키지를 통해서 애플리케이션을 실행하는 구조이기 때문에 서버구동시에 moinda-core 패키지의 Entity 들을 전부 스캔하고 Bean 으로 등록을 해야한다. 애플리케이션 실행 패키지(moinda-api)의 클래스 @PropertySources({ @PropertySource("classpath:application-core.properties") }) @EntityScan("c.. 2022. 7. 13.
멀티 모듈에서 JPA 모듈을 사용하기 위한 설정 및 내 견해 이전 포스트와 이어집니다. 타 모듈의 클래스들을 빈으로 등록하기 위한 설정 java-core 모듈을 빈으로 등록해서 java-api에서 사용을 하도록 해야 한다. 그래서 @SpringBootApplication으로 스캔 패키지를 설정한다. java-core의 모듈들 뿐만 아니라 java-api에서 사용되는 모든 모듈들이 스프링 빈으로 등록이 되어야 하기 때문에 패키지 가장 상위를 명시했다. 스프링 빈으로 등록해두기 위해 스캔 범위를 지정. @EntityScan("com.multi.core") // core 모듈을 포함하여 스프링 빈으로 등록시키 위해서 패키지 탐색범위를 지정한다. @SpringBootApplication(scanBasePackages = {"com.multi"}) public class .. 2022. 6. 23.
멀티 모듈에서 JPA DDL 로그가 안나온다. 멀티모듈이라는 단어가 나온지는 꽤 됐으나 최근에 멀티모듈이라는 것에 대해 들었다. 대략적으로 이해한 부분은 아래와 같다. 하나의 프로젝트가 방대해질수록 프로젝트가 가지는 의존성이 어마어마해진다. 프로젝트의 의존성들을 각 모듈에 따라 분리시킴으로써 모듈들이 자신의 역할을 수행하게하고 필요한 의존성들을 가지고 있게 한다. 새로운 구조가 생길 때마다 필요한 모듈을 미리 구현한 각각의 모듈을 사용함으로써 굳이 선언해서 사용하지 않음으로써 의존성을 분리시키고 관리를 좀 더 수월하게 하기 위함이다. 멀티 모듈로 프로젝트를 만들어가다보니 부딪히는 부분이 많았다. 첫 번째는 타 모듈에서 서버를 실행할 경우 Entity 를 가지고 있는 모듈의 의존성을 받아써도 JPA 관련 DDL 로그가 나타나지 않았다. 현재 만들고 있.. 2022. 6. 22.
성장하기 위한 목표 설계 및 습관 잡기 2 3가지 단계 공부하는 단계 - 기술에 대해서 무엇인지 알아가는 단계 체득하는 단계 - 해당 기술에 대해서 직접 써보면서 이해를 추가적으로 하는 단계 정리하는 단계 - 기술에 대한 경험 및 느낀점(장점, 단점, 문제점)을 정리하고 알아둬서 나의 것으로 만들어나가는 단계 열정X , 목표X, 시스템O 열정은 불꽃과 같다. 언젠가는 식는다. 목표는 달성하지 못하면 그에 대한 실망이 크게 다가온다. 시스템을 만들어 둬야한다. 즉, 나만의 루틴 같은 것들을 만들어서 그러한 환경에 적응해 나가는 것. 예를 들면 특정 루틴 이후에 주기적으로 행할 행위에 대하여 설정을 해둔다. 사이드 프로젝트 또는 추가적인 공부 를 하는 것. 이때, 주기적으로 해주는 것이 포인트이다. 물론, 불가피한 상황은 제외한다. 2022. 6. 12.