spring
-
스프링 부트 핵심 가이드 8주차: 13책 공부/스프링 부트 핵심 가이드 2023. 12. 8. 00:01
📖 책 정보 모바일 가이드 서비스의 인증과 권한 부여 보안 용어 이해 스프링 시큐리티 스프링 시큐리티 동작 구조 JWT 스프링 시큐리티와 JWT 적용 1. 보안 용어 이해 스프링 시큐리티를 활용하기 위해 보안과 관련된 용어를 먼저 학습해야 한다. 1. 인증 Authentication 사용자가 누구인지 확인하는 단계. 인증 authentication 의 대표적인 예로 로그인 이 있다. 로그인은 데이터베이스에 등록된 아이디와 비밀번호를 사용자가 입력한 아이디와 비밀번호와 비교해서 일치 여부를 확인하는 과정이다. 로그인에 성공하면 애플리케이션 서버는 응답으로 사용자에게 토큰을 전달한다. 로그인에 실패한 사용자는 토큰을 전달받지 못해 원하는 리소스에 접근할 수 없게 된다. 2. 인가 Authorization 앞..
-
스프링 부트 핵심 가이드 7주차: 11-12책 공부/스프링 부트 핵심 가이드 2023. 12. 7. 00:01
📖 책 정보 모바일 가이드 11장 액추에이터 활용하기 엔드포인트 액추에이터 기능 살펴보기 커스텀 기능 만들기 12장 서버 간 통신 RestTemplate? RestTemplate 사용하기 WebClient? WebClient 사용하기 11장 액추에이터 활용하기 프로젝트에 종속성 추가 , 엔드포인트 액추에이터 기능 살펴보기 액추에이터 커스텀 기능 만들기 1. 프로젝트에 종속성 추가 , 엔드포인트 애플리케이션을 개발하는 단계를 지나, 운영 단계에 접어들면 애플리케이션이 정상적으로 동작하는지 모니터링하는 환경을 구축하는 것이 매우 중요해진다. 스프링 부트 액추에이터는 HTTP 엔드포인트나 JMX를 활용해 애플리케이션을 모니터링하고 관리할 수 있는 기능을 제공한다. 👉 JMX 란? Java Management ..
-
스프링 부트 핵심 가이드 6주차: 10장책 공부/스프링 부트 핵심 가이드 2023. 12. 6. 00:02
📖 책 정보 모바일 가이드 유효성 검사와 예외 처리 일반적인 애플리케이션 유효성 검사의 문제점 Hibernate Validator 스프링 부트에서 검증에 사용되는 대표적인 어노테이션 스프링 부트에서의 유효성 검사 + BindingResult로 valid 에러 다루기 예외 처리 10장 유효성 검사와 예외 처리 일반적인 애플리케이션 유효성 검사의 문제점 Hibernate Validator 스프링 부트에서의 유효성 검사 예외 처리 1. 일반적인 애플리케이션 유효성 검사의 문제점 일반적으로 사용되는 데이터 검증 로직에는 몇 가지 문제점이 있다. 1. 관리의 어려움 계층별로 진행하는 유효성 검사는 검증 로직이 각 클래스별로 분산돼 있어 관리하기가 어렵다. 2. 중복 코드 검증 로직에 의외로 중복이 많아, 여러 곳..
-
Thymeleaf Layout: Fragment 구성 - warning 뜨는 코드Spring Boot 🍃 2023. 12. 6. 00:01
html 만만하게 봤다가 코 다치고 공부..😳 여기서 사용한 Thymeleaf와 thymeleaf-layout 버전은 3.x대 이다. 작성한 코드는 2.x대에 해당하는 코드이기 때문에, 혹시라도 3 버전을 사용하면서 아래 코드를 적용해본다면 다음과 같은 warning 경고 문장을 만나게 된다. ExpressionProcessor : Fragment expression "/fragments/header::Header" is being wrapped as a Thymeleaf 3 fragment expression (~{...}) for backwards compatibility purposes. This wrapping will be dropped in the next major version of the..
-
Thymeleaf 와 Enum 클래스를 사용해서, html radio 태그 제어Spring Boot 🍃 2023. 12. 6. 00:01
보고 배운 블로그 : taegyunwoo.github.io Lombok과 Thymeleaf 의존성을 추가한 상태라는 가정하에 진행 ✏️ Enum 클래스 정의 AnimalType @AllArgsConstructor @Getter public enum AnimalType { MONKEY("몽키 🐵"), PANDA("팬더 🐼") ; private String description; } Enum이 포함된 데이터 객체 생성 AnimalDto @Getter @Setter @ToString @Builder @AllArgsConstructor @NoArgsConstructor public class AnimalDto { private String animalId; private AnimalType animalType;..
-
스프링 부트 핵심 가이드 5주차: 9장책 공부/스프링 부트 핵심 가이드 2023. 12. 6. 00:01
📖 책 정보 모바일 가이드 연관관계 매핑 연관관계 매핑 종류와 방향 1:1 매핑 N:1 , 1:N 매핑 N:M 매핑 영속성 전이 9장 연관관계 매핑 종류와 방향 1:1 매핑 N:1, 1:N 매핑 N:N 매핑 영속성 전이 RDBMS를 사용할 때는 테이블 하나만 사용해서 애플리케이션의 모든 기능을 구현하기란 불가능하다. 대체로 설계가 복잡해지면 각 도메인에 맞는 테이블을 설계하고 연관관계를 설정해서 조인 Join 등의 기능을 활용한다. JPA를 사용하는 애플리케이션에서도 테이블의 연관관계를 엔티티 간의 연관관계로 표현할 수 있다. 1. 연관관계 매핑 종류와 방향 연관관계를 맺는 두 엔티티 간에 생성할 수 있는 연관관계의 종류는 다음과 같다. @OneToOne 1 : 1 @OneToMany 1 : N @Man..
-
Spring boot: JPA 연관관계 살펴보기 - 1:NSpring Boot 🍃 2023. 12. 6. 00:01
1:N 연관관계 한 쪽 엔티티가 관계를 맺은 엔티티 쪽의 여러 객체를 가질 수 있는 것을 의미한다. @OneToMany 어노테이션 이용! 실습 user 엔티티에 user_id로 연관지어진 user history 데이터 목록을 가져오기 엔티티 설계 User 엔티티 public class User extends BaseEntity { private String name; private String email; @OneToMany(fetch = FetchType.EAGER) @JoinColumn( name = "user_id" // 엔티티가 어떤 필드로 조인을 할지 지정해줌 , insertable = false, updatable = false // User 엔티티에서 UserHistory를 변경하지 못하도록..
-
Spring boot: JPA 연관관계 살펴보기 - 1:1Spring Boot 🍃 2023. 12. 5. 00:01
1 대 1 연관관계 어느 엔티티 쪽에서 상대 엔티티와 반드시 단 하나의 관계를 가지는 것을 말한다. 1:1 연관관계는 생각보다 실무에서 많이 사용된다. 실습 1: 단방향 book 테이블과 bookReviewInfo 테이블이 1:1로 조인하는 경우에 대해 실습해본다. bookReviewInfo 엔티티에 book 엔티티를 조인해서 데이터 확인 엔티티 작성 Book 엔티티 @ToString(callSuper = true) @Getter @Setter @SuperBuilder @NoArgsConstructor @AllArgsConstructor @Entity public class Book extends BaseEntity { private String name; private String category; p..
-
Spring Boot: Entity ListenerSpring Boot 🍃 2023. 12. 5. 00:01
Entity Listener 를 사용하여 User 테이블에 변경사항이 생길 경우 해당 히스토리를 저장하는 실습! 0. Entity Listener @Entity Listener JPA 엔티티에 대한 이벤트 리스너를 등록하는 어노테이션이다. 이 어노테이션을 사용하여 엔티티의 생명주기 이벤트를 수신하고 이벤트가 발생할 때 특정 동작을 수행할 수 있다. 아래 나타날 코드에서는 @EntityListener 어노테이션과, @EntityListener 어노테이션에 할당 할 UserEntityListener 클래스를 작성하고 테스트한다. 1. User, UserHistory Entity 작성 User.java 해당 엔티티가 영속화 될 때 UserHistory 엔티티를 동작시키는 이벤트를 발생시키기 위해 @Entity..
-
Spring boot: H2 DB 인텔리제이에서 확인하기Spring Boot 🍃 2023. 12. 5. 00:01
1. dependency 추가 runtimeOnly 'com.h2database:h2' 2. application.yml 설정 추가 기존에 사용하던 방식과 다른 부분은 in memory 방식이 아닌 embeded 방식으로 사용 AUTO_SERVER=TRUE 선언으로 여러 프로세스에서 다중 접속 허용 sql.init.mode = always 설정으로 모든 유형의 데이터베이스에 sql 스크립트 실행 (참고) spring: datasource: url: jdbc:h2:./test01;AUTO_SERVER=TRUE # 프로젝트 루트 위치에 test01 DB Embed driverClassName: org.h2.Driver # h2 db embeded 방식에서도 data.sql 파일이 자동 실행되게 하기 위함 s..