Spring Boot 14

250310 Spring Boot 14 - Querydsl, Gradle Tasks

1. Querydsl 사용 전 세팅1) Spring Starter 프로젝트의 build.gradle 파일 수정* 쿼리 DSL은 Spring Boot의 Add Starter로 추가할 수 없다. 직접 추가해줘야한다.* ext : external variable ==> build.gradle 파일 전체에서 사용할 수 있는 전역변수를 사용하는 곳이라고 생각하면 됨. 2) Maven Central( maven.org )에서 querydsl-jpa 검색 3) build.gradle 파일 수정* testCompileOnly : 테스트할 때도 컴파일할 때 사용하겠다는 뜻* 그 전에는 이클립스에서 컴파일을 해줬는데, gradle task를 할 때는 build.gradle에 있는 의존성들만 사용하기 때문에 단위테스트할 때..

Spring Boot 2025.03.10

250307 Spring Boot 13 - UserDetails 객체, UserDetailsService 객체, 블로그 만들기(8)

1. UserDetails 인터페이스를 구현하는 엔터티 클래스 생성1) domain 패키지 하위의 Member 클래스 파일 수정(1) 클래스 선언 부분에 UserDetails 인터페이스 구현 추가 (2) UserDetails 인터페이스의 추상 메서드 구현   2. UserDetailsService 인터페이스 구현하는 서비스 클래스 생성1) config 패키지 하위의 SecurityConfig 클래스 파일 수정 2) service 패키지 하위에 MemberService 클래스 파일 생성* 스프링 시큐리티에서는 필터들이 UserDetails 인터페이스와 UserDetailsService 인터페이스가 구현되어 있다고 간주하고 메서드를 사용한다.* 구현한 객체를 어떻게 찾느냐? 스프링 컨테이너에 등록되어있는 컴..

Spring Boot 2025.03.07

250306 Spring Boot 12 - Spring Security 페이지 접근 권한/인증 구성 방법, Thymeleaf의 인증 유틸리티 활용, @EntityGraph, 블로그 만들기(7)

1. Spring Security - 페이지 접근 권한, 인증을 구성하는 방법1) HttpSecurity.authorizeHttpRequests(Customizer customizer) 메서드에서 설정.  - Customizer 람다 표현식을 작성.   - 장점: 한 곳에서 모든 설정을 구성할 수 있음.   - 단점: 새로운 요청 경로가 생길 때마다 설정 구성 코드를 수정해야 됨. 2) 컨트롤러 메서드에서 애너테이션으로 설정.   (1) SecurityConfig 클래스(빈)는 @EnableMethodSecurity 애너테이션을 설정.   (2) 각각의 컨트롤러 메서드에서 @PreAuthorize 또는 @PostAuthorize 애너테이션을 설정.   - 장점: 새로운 요청 경로가 생겨도(컨트롤러가 추가..

Spring Boot 2025.03.06

250305 Spring Boot 11 - 프로젝트에 의존성 추가, Spring Security 초기 설정, 블로그 만들기(6)

1. 프로젝트에 의존성 추가하기1) 프로젝트 우클릭 후 Spring - Add Starters 클릭  2) 기존에 사용했던 의존성들 모두 체크 + 새로 추가할 의존성 체크 ==> next 클릭 * OAuth2 Client : 소셜 로그인(구글, 카카오, 네이버 로그인 등) 구현에 필요한 라이브러리 3) 기존 내용에서 변경되는 내용을 확인하는 화면  - 줄이 그어져 있는 부분을 클릭하면 [>] 표시가 나온다.  - [>] 표시를 클릭하면 변경된 내용을 현재 파일에 반영할 수 있다.  - 수정을 완료했으면 Finish 버튼을 클릭. 4) 변경이 완료되고 프로젝트의 build.gradle 파일을 열어보면 의존성 설정이 업데이트 된 것을 확인할 수 있다.   2. Spring Security1) Spring S..

Spring Boot 2025.03.05

250228 Spring Boot 10 - 블로그 만들기(5)

1. 포스트에 달린 댓글들 가져오기1) comments.js 파일에 코드 추가 * axios에 콜백을 등록해주면 axios가 가지고 있다가 응답이 오면 콜백을 실행시켜준다. ※ async / await : 비동기 방식을 사용하는 코드를 동기 방식을 사용하는 것처럼 작성할 수 있도록 해준다.- 콜백의 코드들을 콜백이 아닌 것 처럼 작성할 수 있는 방법.- 비동기통신을 사용하는 함수를 호출할 때 앞에 await를 붙인다.- await를 붙인 함수가 들어있는 함수는 앞에 async를 붙인다.   2. 가져온 댓글들을 화면에 출력하기    3. 새로운 댓글 등록 기능 구현   4. 댓글 삭제/수정 버튼 기능 구현1) comments.js 파일에 있는 makeCommentElements() 함수 수정* data-..

Spring Boot 2025.02.28

250227 Spring Boot 09 - 블로그 만들기(4), PagedModel, fetch - LAZY 사용 시 주의점

1. 포스트 상세보기 페이지에 댓글 기능 추가하기 - 백엔드1) service 패키지 하위에 CommentService.java 파일 생성 2) web 패키지 하위에 CommentController.java 파일 생성 3) dto 패키지 하위에 CommentRegisterDto.java 파일 생성 4) Comment 클래스 파일에 코드 추가 5) CommentService 파일에 코드 추가 * 단위 테스트(1) src/test/java 하위에 service 패키지 생성(2) service 패키지 하위에 CommentServiceTest.java 파일 생성 6) CommentService 파일에 코드 추가 * 단위 테스트- CommentServiceTest 파일에 코드 추가 7) 더미 데이터 생성(1) C..

Spring Boot 2025.02.27

250226 Spring Boot 08 - 블로그 만들기(3)

1. 새 포스트 작성 페이지 만들기1) PostController 클래스 파일에 코드 추가 2) dto 패키지 하위에 PostCreateDto.java 파일 생성 3) PostService.java 파일 코드 추가 4) templates.post 폴더 하위에 create.html 파일 생성   2. 상세보기 페이지 만들기1) PostController 클래스 코드 추가 2) templates.post 폴더 하위에 details.html 파일 생성 3) PostService 파일에 코드 추가 4) details.html 파일 코드 수정   3. 수정하기 기능 만들기1) PostController 클래스 파일 수정 2) details.html 파일 복사 + templates.post 폴더 하위에 붙여넣기 =..

Spring Boot 2025.02.26

250225 Spring Boot 07 - 객체지향 Entity, JPA auditing, 블로그 만들기(2)

1. Post.java 파일 수정1) 클래스에 @AllArgsConstructor 추가, access 속성의 AccessLevel을 PRIVATE으로 설정* 빌더를 만들기 위해 추가한 것이므로 클래스 외부에서 접근할 필요는 없음2) 클래스에 @Builder 추가3) id 필드에 @GeneratedValue 추가, strategy 속성의 GenerationType을 IDENTITY로 설정4) title 필드에 @Basic 추가, optional 속성을 false로 설정* null이 되면 안되는 필드에는 추가해주는 속성* 가능하면 테이블의 컬럼들과 필드들을 매핑해주는 것이 좋다(PK 컬럼에는 @Id, not null인 컬럼에는 @Basic 등..)   2. 상속을 활용한 객체지향 엔터티 설계 - @Mappe..

Spring Boot 2025.02.25

250224 Spring Boot 06 - DTO 사용법, 페이징 처리, 블로그 만들기(1)

1. DTO 사용하기1) src/main/java 하위에 dto 패키지 생성2) dto 패키지 하위에 DepartmentDetailsDto.java 파일 생성 3) DepartmentService.java 파일에 메서드 추가 4) DepartmentController.java 파일에 메서드 추가 5) html 작성   2. 페이징 처리하기1) EmployeeService 파일에 메서드 추가* 페이지(슬라이스) 번호는 0부터 시작한다. 2) EmployeeController 파일의 list() 메서드 수정 3) fragments.html 파일 코드 추가- 타임리프에서 #을 사용하면 함수를 사용할 수 있다.- #numbers.sequence는 특정 범위 내에서 숫자 시퀀스를 생성 4) templates.em..

Spring Boot 2025.02.24

250221 Spring Boot 05 - JPA Query Method 활용, JPQL

1. JPA Query Method 활용1) 컬럼에 포함된 단어로 검색(단어의 대/소문자 구분 없이) 2) 컬럼에 포함된 단어로 검색(단어의 대/소문자 구분 없이, 정렬 순서는 이름 내림차순)* SQL을 자동으로 작성해주고 실행해준다는 장점이 있지만, 메서드명이 너무 길어지고 가독성이 떨어진다는 단점도 있다. 3) 대소문자 구분없이 컬럼 2개 중 1개 이상에 키워드가 포함된 데이터 검색 4) 컬럼이 어떤 값을 초과하는 데이터 검색 5) 컬럼이 어떤 값 미만인 데이터 검색 6) 컬럼이 어떤 범위 안에 있는 데이터 검색* min 보다 크거나 같고, max 보다 작거나 같은 값이 해당된다. 7) 컬럼이 특정 날짜 이전인 데이터 검색 8) 컬럼이 특정 날짜 이후인 데이터 검색 9) 컬럼이 날짜 범위 안에 있는 ..

Spring Boot 2025.02.21