본문 바로가기

Dev/Spring Boot

(9)
스프링 부트 라이브러리 (Test) 편 이번엔 스프링 부트 라이브러리 중 Test 관련하여 살펴보자! 마찬가지로 이미지 첨부 후 설명을 추가하겠다! 중요한 부분의 라이브러리들은 위의 표시된 4개이다. 먼저 기본적으로 junit (단위테스트)를 하기위한 라이브러리 org.springframeworkspring-test : 스프링 테스트를 위해 필요한 라이브러리 mockito-core : mock 객체를 만들어주는 라이브러리 org.assertj:assertj-core : 테스트를 편하게 해주는 유틸리티 클래스
스프링부트 라이브러리(JPA) 편 스프링부트에서 JPA 기반 라이브러리를 살펴보자! 아래의 라이브러리 이미지를 보고 추가적으로 살펴보자 스프링 부트에서 JPA를 사용하기위해 라이브러리를 추가하면 말그대로 데이터베이스를 쓰는 것으로 spring-boot-starter-jdbc 관련한 라이브러리들과 spring-boot-starter-aop 등 이 포함된다. 하지만 그중에서도 중점적으로 볼 부분은 위의 3개이다. com.zaxxer:HikariCP : 디비 커넥션 풀로 스프링 부트 2버전때부터는 이게 기본으로 설정된다. spring-jdbc : Spring Data JPA를 쓰면 스프링 Jdbc도 가져다 쓰게된다. 안에는 spring-tx (트랜잭션) 등이 포함된다. org.hibernate:hibernate-core : JPA는 ORM 기..
스프링부트가 제공하는 라이브러리 살펴보기! SpringBoot 번역하면 좀더 봄이다. 이전에 Spring으로만 한다면 사용할 웹 어플리케이션 서버(Tomcat 등)을 직접 연결시켜줘야 했다! 하지만 스프링 부트로 넘어오면서 별도로 연결시켜줄 필요없이 내장해서 가지고 있다. 아래의 그림을 살펴보자 한가지 더 자세히 살펴보면 org.springframework:spring-webmvc를 의존하고 있다는 점도 주목하자!
스프링부트 공통 설정 그놈 Logback 먼저 로그를 사용하는 이유부터 살펴보자.. 크게 아래의 두가지 이유와 같을 것이다. 대게 에러가 발생했을 때 해당 내용을 알아보고 재현하기 위해서 사용 별도의 파일로 남겨서 내용을 분석하기 위해 로그를 사용 로그 수준은 크게 (TRACE < DEBUG < INFO < WARN < ERROR)로 구분되며 오른쪽으로 갈수록 더 높은 레벨이며 상세하다. 출력 레벨의 설정에 따라서 그 레벨 이상의 로그를 출력한다. ex) INFO 로 설정할 경우 TRACE, DEBUG 레벨은 무시 logback에 대하여? slf4j의 구현체로 스프링 부트의 기본 로그 객체이다. spring-boot-starter-web 라이브러리에 logback-classic, logback-core가 탑재되어 있음 log4j, log4j2 ..
스프링 시큐리티 로그인 인증 그 후... 스프링 시큐리티를 공부하는 과정에서 공부하고 이해한 내용을 바탕으로 풀어보려고 한다. 현재 개인적으로 프로젝트를 진행 도중 회원가입을 하는 과정에서 가입하려는 이메일로 인증 과정을 거치게 하였다. 여기서 문제는 가입하려는 이메일로 인증을 다 받기도 전에 디비에 먼저 데이터를 넣어주다보니 로그인이 되버리는 현상이 생겼다. 시큐리티에서 로그인할 때 이메일 인증이 안되면 인증이 거부되어 튕기게 할 수 없을까?? 라는 의문점이 생겼다. 구글을 뒤적뒤적.. 닥치는데로 찾고 정리하고 공부하기 시작! 방법은 있었다! 지난번에 스프링 시큐리티에 관해서 정리를 한 적이 있는데 거기에 이어서 설명하고자 한다. 지난글을 보려면 여기를 확인하면 된다. 2020/11/19 - [Dev/Spring Boot] - 스프링 시큐리티..
스프링 시큐리티 적용 (CSRF) 스프링 시큐리티(Spring Security)에 대해서 공부한 내용을 정리하며 진행 이해한 내용을 바탕으로 풀어서 정리하였다. 먼저 스프링 시큐리티라고 하면 제일먼저 등장하는 흐름도이다. 아래는 스프링 필터체인의 세부화된 그림으로 이 두가지 그림을 같이 보면서 정리하려고 한다. 스프링상 보안에는 필터/체인 이 존재하는데 요청(Request)가 오게될 경우에는 인증 및 권한 부여를 위해 필터를 하나씩 통과하는 과정을 거치게 된다. 그리고 각 기능별로 관련필터를 찾을 때까지 체인을 통과하는 과정을 겪는다. 예시 HTTP 기본 인증 요청은 BasicAuthenticationFilter에 도달할때까지 필터 체인을 통과한다. HTTP Digest 인증 요청은 DigestAuthenticationFilter에 도달..
@Valid로 유효성 체크하기 혼자 공부하며 이해한 내용을 바탕으로 정리하고자 한다. 먼저 유효성 체크를 해야하는 경우는 다음과 같다 회원가입을 할 경우에 패스워드에 보안문제로 인해 특수문자나 영어 대소문자등을 포함해서 사용해야 하는 경우 이메일 형식의 아이디를 사용하는데 중간에 @가 빠진 상태로 입력하는 경우 대게 유효성 체크를 해주는 경우는 프론트와 백엔드에서 이중으로 처리해주는 것이 좋다. 스프링 부트에서는 도메인으로 사용하는 필드에 조건과 메시지를 작성해주면 @Vaild 어노테이션과 함께 유효성 검사를 할 수 있다. 제일먼저 build.gradle에 아래와 같이 추가해줘야 한다. 스프링 부트 2.3버전 이상부터는 validation이 스프링 부트 스타터 자체에 포함되어있지 않고 별도의 모듈로 분리되었다는점 알아두자! // va..
스프링 빈 주입방법과 템플릿 우선순위 스프링 빈 주입방법에는 크게 두가지로 나뉜다. 1. 컴포넌트 스캔을 이용한 등록방법 컴포넌트 스캔을 이용한 방법은 주로 실무에서 정형화된 컨트롤러, 서비스, 리포지토리 같은 곳에 사용한다. 즉, 고정화 되어 바뀔일이 없을 경우! 사용한다고 보면 된다. 무작정 쓰는거보다 상황에 맞게 사용하는것이 중요!! -- MemberController(컨트롤러) @Controller public class MemberController { private final MemberService memberService; /** * DI 주입방법 중 필드주입 방법 * 별로 좋지 않음 */ // @Autowired private final MemberService memberService; /** * DI 주입방법 중 생성자 ..