Server
-
[Spring] AOP(Aspect Oriented Programming)란 무엇일까?Server/Spring 2021. 9. 27. 00:30
AOP(Aspect Oriented Programming)란 무엇일까? 스프링의 삼각형 중에 하나가 AOP(Aspect Oriented Programming)입니다. 이번 글에서는 어렵고 중요한 AOP에 대해서 정리해보겠습니다. AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불립니다. 그리고 흩어진 Aspect를 모듈화할 수 있는 프로그래밍 기법입니다. 정의하면 이런데.. 무슨 말인지 잘 와닿지 않는 거 같습니다,, 위의 A, B, C 클래스에서 동일한 색깔의 선들의 의미는 클래스들에 나타나는 비슷한(중복되는) 메소드, 필드, 코드들이 나타난다는 것입니다. 이러한 경우 만약 클래스 A에 주황색 부분을 수정해야 한다면 B, C 클래스들에 주황색 부분에 해당하..
-
[Querydsl] Spring Boot에서 Querydsl 설정하는 법Server/Querydsl 2021. 9. 16. 13:29
Spring Gradle 에서 Querydsl 설정하는 법 Querydsl은 Spring boot starter에 없기 때문에 따로 설정을 해주어야 하는데요. 그래서 Spring Boot 프로젝트는 만들었다고 가정하고 build.gradle에 Querydsl 설정 하는 법에 대해서만 정리해보겠습니다. build.gradle에 보면 맨 위에 plugins가 존재합니다. 여기에 위처럼 querydsl을 추가하겠습니다. 그리고 Querydsl 의존성을 dependencies에 추가해주겠습니다. 그리고 마지막에 위의 코드를 추가해야 합니다. 그리고 gradle 새로고침을 누르면 아래와 같이 Querydsl 의존성들이 추가된 것을 볼 수 있습니다. build.gradle 전체 코드 plugins { id '..
-
[Spring] Kotlin으로 ModelMapper 사용하는 방법Server/Spring 2021. 8. 25. 23:17
들어가기 전에 이번 글에서는 Kotlin에서 ModelMapper를 사용하는 방법에 대해서 간단하게 정리 해보겠습니다. Spring으로 백엔드를 개발하다 보면 DTO로 클라이언트로 부터 받아오고 JPA를 통해서 디비에 접근할 때는 Entity로 변환해서 접근을 합니다. 그리고 JPA를 통해서 나온 결과를 그대로 반환하기 것이 아니라 DTO로 변환해서 클라이언트로 반환하게 되는데요. 그러면 매번 DTO 필드가 2개, 3개 달라질텐데 그에 해당하는 생성자를 만들어야 할 것입니다. 상당히 번거로운 작업이 될텐데요. 이럴 때 사용하면 좋은 것이 ModelMapper 입니다. ModelMapper는 서로 다른 Object 간의 필드 값을 자동으로 Mapping 해주는 라이브러리 입니다. gradle impleme..
-
[Spring] H2 Database 연결 에러 해결하기Server/Spring 2021. 8. 24. 14:16
H2 DataBase 에러 해결하기 이번 글에서는 Spring에서 H2 Database를 사용할 때 만난 에러를 해결하는 과정에 대해서 간단하게 정리해보겠습니다. H2 DataBase는 설치가 되어 있다고 가정한 상태로 글을 시작해보겠습니다. 설치를 한 후에 h2 디렉토리를 보면 bin 디렉토리가 존재할 것입니다. bin 디렉토리 안에는 h2.sh라는 파일이 존재할 것인데요. h2.sh 파일을 sh h2.sh로 실행하면 아래와 같은 화면을 볼 수 있을 것입니다. 안뜬다면 http://localhost:8082로 접속하면 보일 것입니다. 그리고 바로 연결 버튼을 누르면 위의 보이는 빨간색 에러를 볼 수 있을 것인데요. Database "/Users/choejeong-gyun/test" not found, ..
-
[Spring] Spring Data Redis로 자료구조 사용해보기Server/Spring 2021. 8. 10. 22:59
Spring Data Redis로 자료구조 다루어 보기 Redis 는 간단하게 말하면 Key-Value 형태의 영속성을 지원하는 인메모리 데이터 저장소입니다. 이번 글에서는 Spring Data Redis를 활용해서 List, Set, Sorted Set, Map을 사용해서 데이터를 저장하고 조회하는 것에 대해서 정리해보겠습니다. 먼저 Spring Boot gradle 기반의 프로젝트에서 의존성 부터 추가해서 시작해보겠습니다. gradle implementation 'org.springframework.boot:spring-boot-starter-data-redis' 위의 Spring-data-redis 의존성을 추가하겠습니다. 이제 Redis 설정을 해보겠습니다. Redis 설정 @Configurati..
-
[MyBatis] MyBatis Reflection 에러 정리Server/MyBatis 2021. 7. 19. 00:58
MyBatis ResultMap 에러 정리 이번 글에서는 프로젝트를 하면서 만났던 MyBatis 에러에 대해서 간단하게 정리를 해보려 합니다. 현재 UserLeaderScore 모델과 User 모델을 ResultMap을 사용해서 JOIN 해서 데이터를 가져오려는 상황입니다. DB 테이블은 위와 같습니다. 이 테이블과 매칭이 되는 자바 클래스 모델은 아래와 같습니다. User Model @NoArgsConstructor @Getter public class User { private Long id; private String nickname; private String gender; private int birth; private String socialType; private String signupCo..
-
[Spring] Filter와 Inteceptor 란 무엇일까?Server/Spring 2021. 6. 30. 14:15
들어가기 전에 클라이언트가 Request를 보내면 Controller로 오기 전에 만나는 여러 관문들이 존재합니다. DispatcherServlet 에 대해서는 저번 글에서 정리했었습니다. 그리고 Interceptor, AOP가 존재하는데요... AOP는.. 어떤 것이었죠? Spring 삼각형 중에 하나였습니다. 아주 중요한 내용 중에 하나이지만 이번 글에서는 Filter와 Interceptor에 대해서 알아볼 것입니다. Spring Filter란 무엇일까? Filter는 말 그대로 어떤 것을 걸러내는 역할을 하는데요. 그림에서 보면 DisPatcherServlet 앞에 Filter가 존재하는 것을 볼 수 있습니다. 즉, 클라이언트의 요청에 대해서 사전에 걸러내는 역할을 합니다. (ex: CORS, XS..
-
[Spring] Spring Security와 Swagger 같이 사용하는 법Server/Spring Boot 2021. 6. 27. 20:13
Spring Security Swagger 에러 해결 이번 글에서는 Spring Boot에서 Security와 Swagger를 사용하면서 만난 문제를 해결한 과정에 대해서 정리해보려 합니다. 프로젝트를 진행하면서 특정 URI로 시작하는 것이 아니라면 시큐리티 단에서 걸러내는 작업을 해보고 싶어서 Spring Security를 아주 간단하게만 적용을 해보고자 하였습니다. 하지만 적용을 하다 보니.. Swagger 관련해서 문제점이 생겼는데요. 그 부분에 대해서 간단하게 정리해보겠습니다. Spring Security는 어떻게 적용했을까? 처음에는 Spring Security는 비밀번호 단방향 암호화를 하는데만 사용했기 때문에 위의 설정정도로만 아주 간단하게 했습니다. 그래서 위와 같이 /api/v2로 시작하..