반응형

web/Spring

    Custom Validation 만들어서 추가하기

    Spring에서 @NotBlank, @Email등 여러 템플릿에 맞게 Validation을 넣을 수 있다.하지만 추가적으로 패스워드 규칙과 같이 별도 체크할 validator가 필요할 때 만들어서 사용해야 하는데 만들어서 지정해보는 작업을 해보자. 1. Controller요청을 받을 DTO앞에 @Valid 어노테이션을 추가해야한다.1234567891011/** * 회원가입 * * @param reqDto * @return * @throws Exception */@RequestMapping("/join")public ResponseEntity join(@Valid UserDto reqDto) throws Exception { return ResponseEntity.ok(userService.insertUs..

    inteliij 사용 시 related gradle configuration 설정을 찾지 못할 경우 해결방법

    Inteliij로 프로젝트를 정상적으로 작업하고 있었는데 어느날 application.yml 설정을 읽지 못해서 오류가 막 발생했다. 그래서 인텔리제이 오류 내용에서 찾아보던 중 다음과 같은 오류 내용을 볼 수 있었다.Unable to make the module: related gradle configuration was not found. Please, re-import the Gradle project and try again 그래서 무엇인고 하니 gradle 설정을 찾지 못한다는 이슈인 것 같아서 gradle 설정을 새로고침 해줬다.방법은 Gradle Task 관련 view에서 새로고침 버튼만 눌러주면 된다. ## 만약 view가 보이지 않는다면 여기 메뉴에서 찾아서 설정할 수 있다.

    [공유] spring에서 생성자 의존성 주입

    spring에서 사용하는 의존성 주입에 경우 @Autowired만을 사용하면 나중에 테스트 케이스를 만들때 어려움이 생긴다. 그래서 생성자 주입을 사용하는데 잘 정돈된 사이트가 있어 공유한다. http://multifrontgarden.tistory.com/214

    Spring Boot Cross Domain 처리

    웹 브라우저에서 같은 도메인을 사용하는 서비스에 대한 요청은 정상적으로 처리가 되나 도메인이 같지 않은 서비스에 요청을 할경우에 오류가 발생한다. 이는 동일 출처 정책(Same Origin Policy) 라는 정책을 두어 다른 도메인의 서버에 요청하는 것을 보안 문제로 간주하고 이를 차단하는 것 때문에 발생한다. Spring Boot에서 간단한 방식으로 해결할 수 있다. 1. 요청에 @CrossOrigin 애노테이션 붙히기12345@GetMapping("/greet")@CrossOriginpublic Greet greeting() { return new Greet("test");}Colored by Color Scriptercs 2. 특정 도메인에서 오는 요청만 받고 싶을 경우.-> 특정 도메인에서 오는..

    Facebook Javascript plugin과 spring security를 이용한 페이스북 로그인

    개인적으로 공부겸 만들고 있는 Wedul Pos에는 아이디와 패스워드를 사용해서 로그인하는 방식을 제공했다. 하지만 페이스북 로그인 방식을 추가해보고 싶어서 facebook 개발자 사이트에 가입하여 정보를 얻고 추가해봤다. 우선 페이스북 로그인 방식을 처리하는 방식은 Facebook Javascript plugin을 사용하여 spring security에서 인증을 하는 방식과 /sign/facebook 요청만 front에서 보내면 server에서 모든 처리를 진행하는 방식 두가지가 있다. 그 중에 첫번째 javascript plugin을 이용하는 방식을 사용해서 구현해보자. 1. facebook developer 사이트에서 javascript 내용 얻기 https://developers.facebook...

    Spring Boot application.properties 암호화 내역 복호화 방법

    Spring Boot에서는 여러 설정값을 application.properties에 입력하여 사용할 수 있다. Spring보다 편리하고 효율적이다. 하지만 DBMS 사용을 위해서 연결정보를 properties에 입력할 때 평문으로 그냥 삽입하면 정보 유출에 문제가 발생 할 수 있다. 이를 해결하기 위해서 application.properties에서 어떻게 사용하는지 확인해보자. 1. application.properties 내용 암호화하여 입력하기우선 application.properties에 있는 내용을 암호화 해서 삽입한다. 나는 AES256으로 암호화 하여 삽입하였다.12spring.datasource.username=K2amNtg+kL5xK23g7H3Znw==spring.datasource.pas..

    Spring boot hibernate jpa에서 Auditing 사용 - update, create 시간 자동 변경

    엔티티를 만들고 데이터를 삽입하고 조작할 때 create date와 last modified date를 별도로 업데이트 해주면서 관리하였다. 하지만 이번에 JPA를 공부하면서 별도의 작업 없이 JPA의 Auditing 기능을 사용하면 데이터를 삽입하고 수정할 때 자동으로 날짜를 수정하도록 할 수 있는 기능이 있는 것을 확인했다. 1. ConfigurationJPA Auditing을 사용하기 위해서는 기능을 자동으로 활성화 해주는 어노테이션을 붙혀주면 된다. 처음에는 @Configuration을 사용하는 클래스에 함께 선언해주었는데 정상적으로 적용이 되지 않아서 @SpringBootApplication을 사용하는 곳에 적용했더니 성공적으로 적용되었다. 123456789101112131415161718192..

    Spring Validation을 이용해서 요청 검증처리

    대게 개발을 진행할 때 front에서 validate를 체크하고 민감한 정보에 대해서는 한번더 체크를 진행하고 작업을 했었다. 하지만 클라이언트에서만 validation을 체크하게 되는 경우 브라우저에서 악의적인 행동에 대해서 대응하기 어려워질수 있기 때문에 백엔드에서도 Validation을 처리해야한다. 여기서 사용되는 @valid 어노테이션들을 알아보자. 1. DTO validation 선언 우선적으로 DTO에 각 속성에 필요한 @valid 옵션들을 추가한다.1234567891011121314151617181920212223242526272829303132package com.wedul.springboottest.rest.dto; import lombok.*; import javax.validatio..

    Spring Application Test 정리

    Spring에서 Junit을 통해 테스트하는데 익숙해져있다. 이 방식과 더불어서 Spring의 MockMvc를 이용하여 Web Layer를 테스트 하는 방법에 대해 공부해보자. 우선 테스트를 진행하기 위해서 Spring-boot-starter-test를 추가해야한다. Gradle1testCompile("org.springframework.boot:spring-boot-starter-test")cs 그러면 테스트 클래스 파일에 @SpringBootTest와 @RunWith가 추가된다. @SpringBootTest는 Spring Boot에서 주 구성 클래스를 찾아서 Spring Application Context를 시작하도록 하는 어노테이션이다. Controller 테스트를 진행할 떄 서버를 가동시키고 Te..

    Java 9 이후 deprecated된 Spring @PostConstruct와 @PreDestory 대안소개

    이 둘은 Bean의 생성 (생성자가 호출 된 후)과 소멸 시점에서 실행할 부분을 정의할때 사용한다. 하지만 @PostConstruct와 @PreDestory 어노테이션은 Java 9에서 Deprecated 되었고 Java 11에서는 제거될 예정이다. 그래서 이와 같은 동작이 필요할 때 사용할 수 있는 대안을 소개한다. InitializingBean, DisposableBean 인터페이스 구현 두 개의 인터페이스를 구현하면서 afterPropertiesSet()과 destroy() 메서드를 재정의하면서 deprecated된 두개의 어노테이션을 대신할 수 있다. 123456789101112131415161718192021@Servicepublic class UserService implements UserS..

반응형