Java26 스프링 시큐리티란? : 인증, 인가, 방식, 필터, 동작원리 ✅ 스프링 시큐리티(Spring Security) 란? : 스프링 기반 애플리케이션의 보안(인증, 인가 등)을 담당하는 스프링 하위 프레임워크. - 보안 관련 많은 옵션 제공, 애너테이션 설정이 쉬움 → 개발자의 보안관련 로직 작성 부담 감소. ( *CSRF 공격 / *세션 고정 공격 방어 / 요청 헤더 보안 처리 제공 ) - 주로 서블릿 필터와, 서블릿 필터로 구성된 필터체인으로 구성된 위임 모델 사용. (인증과 권한에 대한 부분을 필터의 흐름에 따라 처리.) * CSRF 공격 : 사용자 권한을 가지고 특정 동작을 수행하도록 유도하는 공격. * 세션 고정 공격 : 사용자 인증 정보 탈취/변조 하는 공격. ✅ 인증 & 인가 (Authentication & Authorization), 접근 주체 & 비밀번.. 2023. 9. 3. Builder 패턴이란? ( + 개념/장점/애너테이션/적용법/예시 ) ✅ Builder 패턴이란? - GoF 디자인 패턴 중 *생성 패턴에 해당. - 객체를 생성 방법과 표현 방법을 분리하여, 동일한 절차에서도 서로 다른 표현을 생성하는 방법 제공. → 생성자를 가독성 좋게 만들어주는 도구. - builder() 메서드를 통해 셋팅하고자하는 값을 직접 세팅. * 생성 패턴 : 인스턴스를 만드는 절차를 추상화한 패턴. 📌 Builder 패턴 사용 이유 : 객체 생성을 가독성있고 유연하게 적용하기 위해 사용. → 생성자 인자가 많을 때, 빌터 패턴 적용 (Effective Java 2 中) ✅ Builder 패턴 장점 📌 1. 필요한 데이터만 설정 가능 생성자로 객체를 생성할 시, 특정 인자를 사용하지 않고 싶으면 해당 인자에 더미 값을 넣거나, 해당 인자가 없는 생성자를 새.. 2023. 9. 2. JPA Auditing 이란? ( + Audit 기능 적용 방법, 생성일/수정일 자동화) ✅ JPA Auditing 이란? (사전적 의미) Audit : 감시하다 Spring Data JPA 에서 제공하는 Audit 기능은 DB에서 값이 변경되었을때, '누가/언제' 변경했는지 감사하는 기능. → 누가/언제 데이터를 변경했는지 엔티티의 변화를 추적. ✅ Audit 기능을 적용할 수 있는 필드 (애너테이션) - 생성 시간 필드 (@CreatedDate : 데이터 생성 날짜 자동 저장) - 수정 시간 필드 (@LastModifiedDate : 데이터 수정 날짜 자동 저장) - 생성자 ID 필드 (@CreatedBy : 데이터 생성자 자동 저장) - 수정자 ID 필드 (@LastModifiedBy : 데이터 수정자 자동 저장) @CreatedDate // 엔티티 생성/ DB 저장 될 때, 생성 시간.. 2023. 9. 1. @RequiredArgsConstructor 란? (+ 사용 예시 / @Autowired보다 지향되는 이유) ✅ @RequiredArgsConstructor 란? 자바 라이브러리 중 하나인 롬복(Lombok)이 제공하는 기능 중 하나로, 스프링에서 생성자를 자동으로 설정해주는 어노테이션. - final / @NotNull 인 필드 값을 파라미터로 받아 생성자를 만들어줌. - @Autowired 없이 생성자를 만들어줌 (=@Autowired를 사용하지 않고 의존성 주입) ✅ @Autowired 보다 @RequiredArgsConstructor 가 지향되는 이유 📌 순환 참조 방지 : @Autowired 를 쓰면 빈 순환 참조 문제가 발생해 서버가 죽어버릴 수 있음. *순환 참조 : A가 B의 빈을 주입받고 , B가 A의 빈을 주입받으며, 서로 순환되어 참조하는 경우 . 📌 테스트 코드 작성 용이 : 스프링 컨테이.. 2023. 8. 29. [Thymeleaf] 타임리프(Thymeleaf)란? (+ 표현식/문법/의존성추가/사용법 알아보기) ✅ 타임리프(Thymeleaf)란? : 자바 기반 템플린 엔진. - HTML 및 템플릿 엔진 문법 필요. - 템플릿 엔진마다 구조는 비슷하나, 문법이 조금씩 다름. - 대표적인 예시 : 타임리프, JPS, 프리마커 (스프링은 타임리프를 권장함) 📌 템플린 엔진 : 서버에서 데이터를 받아 웹페이지 (즉, HTML) 상에 데이터를 넣어 보여주는 도구. → 컨트롤러가 전달하는 데이터를 이용해, 동적으로 화면을 구성할 수 있게 해주는 도구. ✅ 타임리프 표현식/문법 📌 자주 사용하는 표현식 : 서버로부터 전달받은 데이터를 사용자들이 볼수 있는 뷰로 만들기위해 사용되는 표현식만 소개. 표현식 설명 ${ ... } 변수값 표현식 #{ ... } 속성파일 표현식 @{ ... } URL 표현식 *{ ... } '변수 .. 2023. 8. 28. 자바 테스트 코드, JUnit 개념/작성법/예시 ✅ 테스트 코드 : 작성한 코드가 의도대로 작 동작하는지 확인하는 목적으로 작성하는 코드. 📌 테스트 코드의 장점 - 유지보수에 좋음. - 코드 수정 시, 기존 코드가 잘 동작하지 않을까바 걱정하지 않아도 됨. 📌 given - when - then' 패턴 : 테스트 코드의 패턴 중 하나로, given-when-then 패턴은 테스트 코드를 3단계로 구분해 작성하는 방식. - given : 테스트 ' 준비' 단계 - when : 테스트 '진행 ' 단계 - then : 테스트 결과 ' 검증' 단계 ✅ 스프링 부트와 테스트 스프링 부트는 테스트를 위한 도구/애너테이션을 제공함. 그중 'spring-boot-stater-test' 에 테스트를 위한 도구가 모여있음. 스프링 부트 스타터 테스트 목록 JUnit .. 2023. 8. 24. 스프링 데이터 JPA (Spring data JPA) 란? ✅스프링 데이터 JPA - JPA를 쓰기 편하도록 만들어놓은 모듈. - 스프링 데이터 JPA에서는 스프링 데이터의 인터페이스를 상속받은 JpaRepository 인터페이스를 제공. - JpaRepository는 JPA를 더 편리하게 사용하는 메서드를 제공 : DB의 테이블 조회/수정/생성/삭제 같은 작업을 간단히 할 수 있음 (기본 CRUD를 위한 메서드 사용 가능) ✅JpaRepository : 스프링에서는 스프링 데이터 JPA에서 제공하는 JpaRepository 클래스를 상속받아 CRUD를 간단하게 구현가능. * 리포지토리 : 엔티티에 있는 데이터들을 조회/저장/변경/삭제 할때 사용하는 인터페이스 * 기존의 메서드 호출로 엔티티 상태 변경 예시 @PersistenceContext EntityMana.. 2023. 8. 22. 이전 1 2 3 4 다음