Peony의 기록 창고 🌼
[Spring Security] Spring Security 6.1 : Security Config deprecated
Spring/Spring Security 2023. 10. 9. 20:53

Springboot 3.1.0 환경에서 Spring Security로 인증 방식을 구현하던 중 FilterChain 등록 코드에서 deprecated 에러가 등장했다. 'csrf()' is deprecated and marked for removal Spring Security 6.1.0 SpringBoot 3.1.0 버전은 Spring Security 6.1.0 버전을 dependency 한다. Spring Security 6.1.0의 release note를 살펴보면 and()와 non-lambda DSL methods를 deprecating 했다고 나와있다. non-lambda DSL? Spring Security 5.2 release 부터 lambda DSL을 지원해왔었다. 다만 이번 releas..

[JPA 활용1] 웹 계층 개발
Spring/JPA 활용1 2023. 9. 18. 20:05

타임리프 관련은 강의 내용에 있으니, 컨트롤러 부분만 정리해보았다. 홈 컨트롤러 등록 @Controller @Slf4j public class HomeController { @RequestMapping("/") public String home() { log.info("home controller"); return "home"; } } 회원 등록, 조회 회원 등록 폼 객체 폼 객체를 사용해서 화면 계층과 서비스 계층을 명확하게 분리하자. @Getter @Setter public class MemberForm { @NotEmpty(message = "회원 이름은 필수 입니다") private String name; private String city; private String street; private..

[JPA 활용1] 주문 도메인 개발
Spring/JPA 활용1 2023. 9. 18. 03:13

상품 도메인 기능 : 상품 등록, 목록 조회, 상품 수정 상품 도메인은 간단하니 생략하고 주문 도메인으로 넘어가보자. 주문 도메인 구현 기능 : 상품 주문, 주문 내역 조회, 주문 취소 주문 엔티티 @Entity @Getter @Setter @Table(name = "orders") public class Order { @Id @GeneratedValue @Column(name = "order_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_id") private Member member; @OneToMany(mappedBy = "order", cascade = CascadeType.ALL) privat..

article thumbnail
[JPA 활용1] 회원 도메인 개발
Spring/JPA 활용1 2023. 9. 14. 01:25

애플리케이션 아키텍처 계층형 구조 사용 controller, web: 웹 계층 service: 비즈니스 로직, 트랜잭션 처리 repository: JPA를 직접 사용하는 계층, 엔티티 매니저 사용 domain: 엔티티가 모여 있는 계층, 모든 계층에서 사용 패키지 구조 jpabook.jpashop domain exception repository service web 개발 순서: 서비스, 리포지토리 계층을 개발하고, 테스트 케이스를 작성해서 검증, 마지막에 웹 계층 적용 회원 리포지토리 @Repository @RequiredArgsConstructor public class MemberRepository { private final EntityManager em; public void save(Membe..

article thumbnail
[JPA 활용1] 도메인 분석 설계 & 구현 준비
Spring/JPA 활용1 2023. 9. 13. 17:00

실제 동작하는 화면은 다음과 같다. 기능 목록 회원 - 등록, 조회 상품 - 등록, 수정, 조회 주문 - 주문, 주문 내역 조회, 주문 취소 기타 요구사항 상품은 재고 관리가 필요하다. 상품의 종류는 도서, 음반, 영화가 있다. 상품을 카테고리로 구분할 수 있다. 상품 주문시 배송 정보를 입력할 수 있다. 도메인 분석 설계 도메인 모델과 테이블 설계 도메인 모델 회원, 주문, 상품의 관계 : 회원은 여러 상품을 주문할 수 있다. 그리고 한 번 주문할 때 여러 상품을 선택할 수 있으므로 주문과 상품은 다대다 관계다. 따라서 그림처럼 주문상품이라는 엔티티를 추가해서 다대다 관계를 일대 다, 다대일 관계로 풀어냈다. 다만, 카테고리와 상품은 경험을 위해 다대다로 두었다. 상품 분류 : 도서, 음반, 영화는 상..

article thumbnail
[JPA 활용1] 프로젝트 환경설정
Spring/JPA 활용1 2023. 9. 12. 00:51

프로젝트 환경설정 https://start.spring.io/ Dependencies spring-boot-starter-web 톰캣, 스프링 웹 MVC 등 지원 spring-boot-starter-thymeleaf 뷰 단을 SSR로 제공하는 타임리프 템플릿 엔진 Spring-boot-starter-data-jpa aop, jdbc (HikariCP 커넥션 풀), 하이버네이트 , 스프링 데이터 jpa 등 지원 spring-boot-starter(공통) 스프링 부트 + 스프링 코어 + 로깅 등 지원 테스트 라이브러리 spring-boot-starter-test junit, mockito, assertj, spring-test 핵심 라이브러리 스프링 MVC 스프링 ORM JPA, 하이버네이트 스프링 데이터 ..

[Spring] 빈 생명주기 콜백
Spring/Spring Basic 2023. 8. 14. 20:38

빈 생명주기 콜백 데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요하다. 이번 시간에는 스프링을 통해 이러한 초기화 작업과 종료 작업을 어떻게 진행하는지 알아보자. 스프링 빈은 간단하게 다음과 같은 라이프사이클을 가진다. 객체 생성 → 의존관계 주입 스프링 빈은 객체를 생성하고, 의존 관계 주입이 끝난 다음에야 데이터를 사용할 준비가 완료된다. 따라서 초기화 작업은 의존관계 주입이 모두 완료되고 난 다음에 호출해야 한다. 하지만, 개발자가 의존관계 주입이 완료된 시점을 어떻게 알 수 있을까? 스프링은 스프링빈에게 콜백 메서드를 통해 초기화 시점을 알려주는 ..

[Spring] 의존 관계 자동 주입
Spring/Spring Basic 2023. 8. 3. 20:22

주입 방법 1. 생성자 주입 생성자 주입은 생성자 호출 시점에 딱 1번만 호출되는 것이 보장된다. 주로 불변, 필수 의존 관계에서 사용한다. 만약, 생성자가 1개인 스프링 빈이면? @Autowired를 생략해도 자동으로 주입된다. @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this...

article thumbnail
[Spring Security] 스프링 시큐리티 동작 과정에 대해 알아보자.
Spring/Spring Security 2023. 7. 31. 01:32

GDSC 활동을 하면서 여러 백엔드 분들이 시큐리티에 대해 많이 어려워하시는 것 같아 정리한 내용들을 공유해보려고 합니다. 스프링 시큐리티란 ? 스프링 기반의 애플리케이션의 보안(인증과 권한, 인가 등)을 담당하는 스프링 하위 프레임워크이다. 스프링 시큐리티에 대해 정리하기 전에 헷갈릴 수 있는 단어들을 먼저 알고 가자. 보안 용어 정리 인증(Authenticate) : 유저가 누구인지 확인하는 절차 인가(Authorization) : 인증된 사용자에 대해 권한을 확인하고 허락하는 것 접근 주체(Principal) : 보호된 대상에 접근하는 유저 비밀번호(Credential) : 대상에 접근하는 유저의 비밀번호 스프링 시큐리티 특징과 구조 보안과 관련하여 체계적으로 많은 옵션을 제공하여 편리하게 사용할 ..

article thumbnail
[Spring] 컴포넌트 스캔
Spring/Spring Basic 2023. 7. 21. 15:51

지금까지 만든 Appconfig를 보면 @Bean 어노테이션을 붙여서 직접 설정정보에 스프링 빈을 나열하는 형식이었다. 그런데, 내가 만들어야할 스프링 빈이 수백개가 된다면 ? → @ComponentScan을 사용 ! 동작 과정 1. @ComponentScan @Component 어노테이션이 붙은 모든 클래스를 자동으로 스프링 빈에 등록해준다. 이때, 스프링 빈의 기본 이름 : 클래스명 사용, 앞글자만 소문자를 사용한다. MemberServiceImpl 클래스 → Bean 이름 : memberServiceImpl 만약, 클래스에 @Component(“service”)처럼 속성을 설정하면? → service 라는 이름으로 등록된다. 2. @Autowired 의존 관계 자동 주입 생성자에 @Autowired..