본문 바로가기

분류 전체보기

(65)
Spring OCI(oracle cloud infrastructure) Java SDK 활용 (1) Object Storage bucket 정보 가져오기 Storage AWS나 오라클 같은 클라우드 서비스에는 파일을 업로드 할 수 있는 Storage 서비스가 있다. 대표적으로 AWS의 S3가 있는데 확실히는 잘 모르지만, AWS에서는 이 S3를 활용할 수 있는 api를 제공하기 때문에 api를 활용해 서버단에서 액세스를 할 수 있다. 이와 비슷하게 오라클 클라우드에서도 Object Storage라는 스토리지 서비스를 제공하고, OCI 라이브러리를 활용해 마찬가지로 서버단에서 액세스하는게 가능하다. 그래서 정보는 저어엉말 너무 없지만 오라클에서 제공하는 oci java sdk를 활용해서 object storage를 활용하는 솔루션을 만들예정이다. (삽질을 많이 했다.) 설정 및 전제 조건 당연히 오라클 클라우드 계정이 있다는 가정 하에 oci를 사용하기 위..
Spring MVC JPA 에서 Mybatis 추가하기 이전에 JPA + Querydsl의 구성을 사용하는데 동적으로 복잡한 쿼리를 짜야할때 한계를 느껴서 Mybatis를 추가로 설정해 사용하기로 했다. JPA의 CUD 영속성 장점과 복잡한 Read 쿼리를 짤 수 있는 Mybatis를 활용하면 좋을 것이라고 생각했기 때문이다. Mybatis 설정만 얘기할 것이기 때문에 JPA설정은 이전글을 참고하면 된다. https://riverblue.tistory.com/47?category=753253
Spring JPA Querydsl 설정과 간단한 사용 JPA를 처음 사용하면서 아직 많이 써보진 않았지만 JPA의 장점과 한계에 느끼고있다. 개인적으로 느끼는 JPA의 가장 큰 장점은 영속성이다. 예시로, Mybatis를 사용할때는 insert 후 바로 컬럼을 업데이트 해줘야 하는일이 있으면 다시 update로직을 불러서 해결했지만 JPA는 쉽게 save(insert, update)후 리턴받은 객체에 다시 set필드만 해줘도 영속성 때문에 적용이 된다는 것이다. 정말 좋은 장점이지만 반대로 단점도 조금 큰 것 같다. spring-data-jpa에서 제공하는 메서드와 JPQL같은 정적쿼리에는 동적인 쿼리를 만들기에 한계가 있다. 이를 극복하기 위한 방안으로 Querydsl이라는 프레임워크가 있다. Querydsl SQL, JPQL을 자바 소스코드로 만들어주는..
Spring 메일 보내기 Mail 보내기 스프링의 mailx 라이브러리로 편하게 메일을 보낼 수 있다. 개발한 코드는 당연히 내 기준에 간단하면서 맘에 드는 형식이다. 메일을 보내기 위해선 당연히 메일서버가 필요하다. 우리가 스프링에서 해야할 것은 메일서버(smtp)로 요청을 보내는 것이다. 나는 네이버 메일을 사용했다. 구글x 먼저 네이버에서 SMTP사용 설정을 해야한다. 네이버 SMTP 사용 네이버 메일 > 환경설정(아래에 조그맣게 있음) > POP3/SMTP 설정 > 사용함 설정 밑의 환경 설정 값은 context에서 빈 설정때 쓰인다. pom.xml dependency 추가 com.sun.mail javax.mail 1.6.2 org.springframework spring-context-support ${org.springframewo..
Spring JPA @Query 사용하기 JPQL Spring legacy 프로젝트를 개발하면서 JPA를 처음 사용해봤다. Mybatis에 익숙해진 나는 쿼리를 직접 쓰고 db에 만들어놓은 프로시저나 함수를 이용하는 쿼리를 작성하는게 익숙했는데 jpa는 인터페이스에서 제공하는 메서드만 사용하기 때문에 사용할 방법이 없었다. 하지만 찾아보니 JPA에서도 @Query 어노테이션을 사용해 직접 쿼리를 작성해 새로운 커스텀 메서드를 생성하는게 가능했다. => 이를 JPQL이라고 한다. 추가로 콘솔에 쿼리를 로깅하기 위한 설정을 했다. Repository에서 @Query 사용 package com.poozim.jobcall.repository; import org.springframework.data.jpa.repository.JpaRepository; impo..
Spring Interceptor 적용하기 스프링에서는 요청에 공통적으로 처리할 수 있는 3가지 개념이 있다. Filter Interceptor AOP 이 세가지는 어떤 타이밍에 처리하는지에 따라 나뉘는데 그 중 Interceptor에 대한 간단한 개념과 설정에 대해 말하려고한다. Dispatcher Servlet 인터셉터 전에 먼저 Dispatcher Servlet에 대해 조금 알아야 이해하기 쉽다. 그림이 눈에 안들어올 수 있는데 자세히 집중을 해봐야한다. 태초에는 컨트롤러의 개념x 스프링 개념x 웹 애플리케이션을 만들기 위해선 요청 서블릿을 직접 생성해서 응답을 해야했고, 서블릿에 url을 매핑하려면 서블릿이 많이 늘어날 수 밖에 없었다. dispatcher servlet은 요청마다 이 서블릿들을 매핑해주는 서블릿 관리자같은 개념이다. 지금..
Spring MVC JPA 적용하기 (spirng-data-jpa) 이전 글중 eclipse 스프링 레거시 프로젝트 생성과 이어지는 내용이다. https://riverblue.tistory.com/35 eclipse 스프링 레거시 프로젝트 생성 및 나의 기본 세팅 스프링 레거시로 만들고 싶은게 생겨서 새로 프로젝트를 만든다. ide는 eclipse 2020-09 버전 당연히 market으로 스프링이 설치되어있고 perspective는 spring으로 선택되어있어야 한다. 프로젝트 생성 File > riverblue.tistory.com 초기 프로젝트 구성으로 나에게 익숙한 Mybatis를 쓰려고 했지만 JPA를 써보기로 했다. 이유는 궁금해서 나는 기존에 ORM에 대해서 잘못알고 있었다. jdbc나 mybatis, jpa처럼 애플리케이션에서 디비에 접근할수 있게 하는 라..
Spring XSS Filter 개발 및 적용 개발자들이 항상 고민하는 XSS를 막기위한 XSS Filter를 간단하게 개발하고 적용해봤다. 처음엔 XSS 필터링을 인터셉터에서 리퀘스트에서 데이터 뽑아서 replace 하고 다시 넣어주면 되지않나? 라고 생각했다. 인터셉터에서 한다는게 안일한 생각이지만, 전부 틀린말은 아니다. 1. 요청에서 데이터를 가져온다. 2. XSS를 escape한 문자로 replace해서 다시 넣어준다. 1번 경우 inputStream을 사용해야하는데 이때 already called 에러를 뱉기 때문에 HttpServletWrapper를 따로 정의해서 새 스트림을 리턴하는 형식으로 해야한다. 2번 경우 인터셉터에서 단순 setparameter같은 메서드가 없기 때문에 HttpServletWrapper를 따로 정의해서 데이터를..