Java(93)
-
[Spring Security] HttpSecurity 와 WebSecurity
이전 강의를 통해 Spring Security 의 초기화에 대해 알수 있었는데 해당 내용이 전부는 아니다. 이번 게시물을 통해 나머지 부분에 대한 내용을 좀 더 알아보려 한다.1. HttpSecurity 와 SecurityFilterChain 현재 프로젝트는 자동 설정을 통해 기본 보안이 적용된 상태이다. 그래서 SpringBootWebSecurityConfiguration.SecurityFilterChainConfiguration 클래스의 defaultSecurityFilterChain() 를 사용하게 된다. 해당 메서드는 파라미터로 HttpSecurity 객체를 받는데 해당 객체는 어떻게 생성되어 전달되는 걸까? 답은 'org.springframework.security.config.annotatio..
2024.11.19 -
[Spring Security] SecurityBuilder 와 SecurityConfigurer
애플리케이션 실행 시 Spring Security 는 어떻게 초기화 될까? 이번에는 초기화에 가장 중요한 역할을 수행하는 SecurityBuilder 와 SecurityConfigurer 에 대해서 알아보자.1. 설명1-1. SecurityBuilder 인터페이스 SecurityBuilder 는 빌더 클래스로서 웹 보안을 구성하는 Bean 객체와 설정 클래스들을 생성하는 역할을 한다. 라이브러리를 통해서 아래와 같은 내용을 확인할 수 있었다.interface SecurityBuilderInterface for building an Object객체 구축을 위한 인터페이스O build()Builds the object and returns it or null. Returns : the Object to be..
2024.11.19 -
[Spring Security] 의존성 추가 및 기본 설정 적용
Spring Security 를 프로젝트에 적용해 사용하려면 어떻게 해야 하는지 학습한 내용을 기록해 본다. 강의 수강중 작성한 실습 프로젝트는 여기서 확인할 수 있다.1. 의존성 추가 Spring Security 를 사용하기 위해서는 아래의 의존성을 'build.gradle' 에 추가할 필요가 있다.dependencies { implementation 'org.springframework.boot:spring-boot-starter-security' ...} 2. 자동 설정을 통한 기본 보안 적용 Spring Security 는 서버가 실행되면 초기화 작업 및 보안 설정이 이루어진다. 만약 개발자가 별다른 설정이나 코드를 작성하지 않았다면 '기본 웹 보안 기능' 이 작동하게 된다. 즉, 기본적으로 수..
2024.11.19 -
[Spring Plus] Level 2-3 요구사항 반영
'Level 2-3' 의 요구사항을 반영한 내용을 기록한 포스팅이다. 어떠한 생각과 과정을 통해 요구사항을 반영했는지 알 수 있도록 작성해 보았다. 0. 요구사항 현재 일정 조회(단건)시 사용되는 'TodoRepository' 인터페이스의 'findByIdWithUser()' 는 JPQL 을 사용해 DB 에서 정보를 조회하고 있다. 이제는 일정 조회시 QueryDSL 을 사용해 DB 에 일정 조회 쿼리를 날리는 방식을 사용할 수 있게 코드를 수정해야 한다. 1. QueryConfig 생성 우선 QueryDSL 을 사용하려면 'build.gradle' 의 'dependencies' 에 의존성을 아래와 같이 추가해 주어야 한다. 해당 부분은 프로젝트 초기 설정 당시 추가해둔 상태이다.implementati..
2024.11.15 -
[Spring Plus] Level 2-2 요구사항 반영
'Level 2-2' 의 요구사항을 반영한 내용을 기록한 포스팅이다. 어떠한 생각과 과정을 통해 요구사항을 반영했는지 알 수 있도록 작성해 보았다. 0. 요구사항 현재 API(GET /todos/{todoId}/comments) 요청시 발생하는 'N+1' 문제를 해결해야 한다. 1. 문제 원인 파악 우선 CommentService 클래스를 확인해보니 댓글 목록 조회에 사용되는 'getComments()' 를 확인하였다. 해당 메서드는 패스 파라미터로 전달받은 일정 ID 로 CommentRepository 인터페이스의 'findByTodoWithUser()' 를 호출해 반환받은 'List' 로 'List' 를 생성해 반환하고 있었다.@Service@RequiredArgsConstructor@Transac..
2024.11.14 -
[Spring Plus] Level 2-1 요구사항 반영
'Level 2-1' 의 요구사항을 반영한 내용을 기록한 포스팅이다. 어떠한 생각과 과정을 통해 요구사항을 반영했는지 알 수 있도록 작성해 보았다. 0. 요구사항 이전 개발자의 의도대로 일정 생성 요청시 요청 사용자가 자동으로 해당 일정의 매니저로 등록될 수 있도록 코드를 수정해야 한다. 여기서 말하는 '매니저 등록' 은 DB 의 MANAGERS 테이블에 매니저(일정 생성 사용자) 및 일정 정보가 반영되는 것을 말한다. 해당 문제 해결시 JPA 의 Cascade 를 활용해 보자. 1. 문제 원인 파악 프로젝트를 살펴보니 현재 일정 생성시 생성을 요청한 사용자(작성자)의 정보까지 포함해 일정을 생성하고 있다는 것을 확인했다. 하지만 아래와 같이 테스트를 위해 계속해서 일정을 추가했음에도 현재 MANAGE..
2024.11.14