목록Framework/Spring (24)
처음부터 차근차근
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b6csB5/btrThkS80Nj/W3GbIeuCM3jxdNMKLYf07K/img.png)
개요 위의 이미지는 로그인 유지 기능 예시 이미지이다. spring security를 이용하면 위와 같은 로그인 유지 기능을 쉽고 빠르게 만들 수 있다. spring security의 세션 유효시간은 15분이다. 그래서 로그인을 한 후 15분이 지나면 세션이 만료되어 로그아웃 처리된다. 그래서 15분 후에도 로그인을 유지하고 싶으면 로그인 유지 기능을 따로 만들어야하는데, spring security에서는 로그인 유지 기능을 rememberMe라는 쿠키를 이용해서 암호화된 키값을 저장하는 방법으로 로그인 유지 기능 만드는 것을 제공하고 있다. 로그인을 유지하는 방법 3가지 1. 로그인 할 때 유저의 아이디, 비번, 만료시간, 키 등을 쿠키로 저장해 놓는 방법 이 방법은 보안적으로 매우 좋지 않다. 해커가..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/3wB22/btrRo3xExog/2isJUBlr2FpyKXoo8XeNnk/img.png)
spring security spring security는 인증과 인가 등의 보안 기능을 제공하는 스프링 프로젝트이다. spring에서 제공하는 강력한 보안 기능을 이용해서 안전한 웹 애플리케이션을 손쉽게 개발할 수 있다. 인증과 인가의 차이 인증(Authentication) 사용자가 누군지 확인하는 것이다. 대표적인 예로 로그인이 있다. 인가(Authorization) 권한을 확인하는 것이다. 인증을 통해 검증된 사용자가 웹 애플리케이션의 리소스에 접근할 때 사용자가 해당 리소스에 접근할 권한이 있는지 체크하는 것을 말한다. 대표적인 예로 admin 페이지에 일반 user가 들어오지 못하는 것을 들 수 있다. principal? spring security를 사용하면 view에서 사용자 현재 로그인한 ..
Bean Validation Bean Validation 데이터 유효성 검사 프레임워크이다. 어노테이션으로 데이터를 검증한다. 검증 자체를 DTO or 도메인에 얹는 방식으로 수행한다. Hibernate Validator Bean Validation 명세의 구현체이다. 스프링 부트에서는 이 Hibernate Validator를 유효성 검사 표준으로 채택해서 사용하고 있다. 스프링 부트의 유효성 검사 스프링 부트는 각 계층으로 데이터가 넘어오는 시점에 해당 데이터에 대한 검사를 실시한다. 여기서 각 계층은 컨트롤러, 서비스, 레파지토리 등을 의미한다. dto는 데이터를 담아 컨트롤러 -> 서비스 -> 레파지토리 이렇게 이동한다. 그래서 dto에다 유효성 검사를 얹어놓은 것이다. 스프링 부트는 dto 객체를..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/r2yuS/btrMljftqdp/TkW7UmAxbp1KBLjfmVqbO1/img.png)
exception을 커스텀해서 만드는 방법 1. 클래스 생성 2. RuntimeException class 상속받고, 생성자를 정의한다. public class CRUDFailException extends RuntimeException { public CRUDFailException(String message) { super(message); // RuntimeException 클래스의 생성자를 호출합니다. } } 3. controller advice에서 예외를 받아 처리할 로직을 작성한다. @ControllerAdvice public class ExceptionController { ... @ExceptionHandler(CRUDFailException.class) protected String ha..
swagger 설정 파일 만들다가 configuration class에 extends WebMvcConfigurationSupport implements WebMvcConfigurer 함에 따라 결과가 달라져서 찾아보게 되었다. WebMvcConfigurationSupport https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupport.html WebMvcConfigurationSupport (Spring Framework 5.3.22 API) Add custom HandlerMethodArgumentResolve..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/CeqYB/btrLLx596VT/eOASlC8SqG9M7nBK0KeZ71/img.png)
controller advice의 예외 처리 원리 contoroller advice는 controller에서 예외가 생겼을 때 @ControllerAdvice나 @RestControllerAdvice를 붙인 class의 해당 예외를 핸들링하는 메서드를 호출해서 예외를 처리한다. controller는 controller 안에 클라이언트가 입력한 주소와 mapping이 되는 메서드가 있어야하는데, 404 에러 같은 경우에는 controller안에 mapping되는 메서드가 없다보니까 controller 내에서 생긴 예외처리로 구분되지 않아서 controller advice로 예외처리하는 것이 불가능하다. 예외처리 방법 하지만 다행히도 contoroller advice 로 404에러를 해결하는 방법이 있다. ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/KV2H4/btrMt3B8Dbq/9HPIjx0ZMY1SKP4vrTJzGK/img.png)
ORM Object Relational Mappin의 준말로 객체 관계 매핑이다. 클래스(객체)와 데이터베이스 테이블(관계)을 자동으로 매핑 하는 기술이다. ORM을 이용하면 쿼리문 작성이 아닌 메서드로 데이터를 조작할 수 있다는 장점이 있다. JPA JPA는 자바의 ORM 기술 표준으로 채택된 인터페이스 모음이다. ORM보다 더 구체화된 개념이다. 인터페이스이기 때문에 아직 구현된 것이 아니고, 어떻게 동작해야하는지 메커니즘이 정리되어있다. JPA는 내부적으로 JDBC를 사용해서 개발자 대신 sql을 생성하고, 데이터베이스를 조작하고, 객체를 자동 매핑하는 역할을 한다. JPA 기반 구현체는 대표적으로 3가지가 있다. Hibernate, EclipseLink, DataNucleus 이 중 Hiberna..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cTRDdG/btrMmgvMVF4/PP369tcKmveiLi6xU2PI40/img.png)
코드 커버리지(code coverage)란 소프트웨어의 테스트를 논할 때 얼마나 테스트가 충분한가를 나타내는 지표이다. 코드 커버리지를 하면 테스트 코드가 실행될 때 어디에 얼마나 많은 코드가 실행되었나 수치를 통해 알 수 있다. 코드 커버리지를 하는 이유는 수치를 통해 테스트를 안한(적게한) 부분을 찾아서 테스트를 더 하게 하여 추후에 생길 수 있는 에러 상황들을 막기 위함이다. 코드 커버리지는 * 화이트 박스 테스트를 통해 측정한다. * 화이트 박스 테스트 : 응용 프로그램의 내부 구조와 동작을 검사하는 테스트 방식 대표적인 코드 커버리지 도구로는 JaCoCo가 있다. JaCoCo는 Java Code Coverage의 약자로, Junit 테스트를 통해 애플리케이션의 코드가 얼마나 테스트 되었는지 확인..