본문 바로가기

분류 전체보기

(62)
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를 따로 정의해서 데이터를..
Java String CompareTo 메서드 Java를 쓰면서 String 비교 메서드를 사용하는데 equals()는 많이 사용했지만 CompareTo는 써보지 않았다. 그래서 String의 CompareTo()에 대해서 정리를 해보려 한다. 참고 문서 : https://www.w3schools.com/java/ref_string_compareto.asp Java String compareTo() Method Java String compareTo() Method ❮ String Methods Example Compare two strings: String myStr1 = "Hello"; String myStr2 = "Hello"; System.out.println(myStr1.compareTo(myStr2)); // Returns 0 becaus..
Java 데이터 타입 Primitive type(기본형) Reference Type(참조형) 자바에서 변수의 데이터 타입은 크게 원시 타입이라고도 불리는 Primitive Type(기본형)과 Reference Type(참조형)으로 나뉜다. 영어로 말해서 뭘 말하는 건지 모를 수 있으니 알아두자 Primitive Type 기본형 자바 메모리 영역중 스택 영역에 실제 값이 할당되는 기본 데이터 타입들이다. 자바에서 데이터 타입의 최소 크기는 1byte다. boolean : 논리형 1byte true 또는 false char : 문자형 2byte 유니코드 문자데이터 byte : 정수형 1byte -2^7 ~ 2^7-1 short : 정수형 2byte -2^15 ~ 2^15-1 int : 정수형 4byte -2^31 ~ 2^31-1 long : 정수형 8byte -2^63 ~ 2^63-1 float :..
Spring Bean Scope 빈 스코프 Bean Scope란? Bean Scope는 빈 객체를 정의할 때 지정 하는 범위를 말한다. 개인적으로 정의하자면 빈 객체가 어디 부분에서 쓰이고 얼마나 쓰일지에 대한 내용을 말하는것으로 생각한다. scope 값을 설정 하지 않으면 singleton(싱글톤)이 디폴트 값이다. 참고 문서 : https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#beans-factory-scopes Core Technologies In the preceding scenario, using @Autowired works well and provides the desired modularity, but determining exactly wh..