본문 바로가기

전체 글

(93)
Spring - Redis 연동 Redis Java Client중 "Lettuce"를 사용하여 진행한다. 의존성 추가 compile 'org.springframework.boot:spring-boot-starter-data-redis:2.3.1.RELEASE' // Redis Redis 외부설정 Properties (application.yml) 변수 기본값 설명 spring.redis.database 0 커넥션 팩토리에 사용되는 데이터베이스 인덱스 spring.redis.host localhost 레디스 서버 호스트 spring.redis.password 레디스 서버 로그인 패스워드 spring.redis.pool.max-active 8 pool에 할당될 수 있는 커넥션 최대수 (음수로 하면 무제한) spring.redis.pool...
Spring - Validation Spring에서는, Validation Annotation으로 Request Form에대한 요청이나, Parameter, Bean Class와 같은 여러가지 필드에 대하여 길이제한, 필수값 등.. 유효성 check를 할 수 있다. 의존성 추가 dependencies { implementation 'org.springframework.boot:spring-boot-starter-validation' // 유효성검사 implementation 'org.springframework.boot:spring-boot-starter-web' } Validation관련 주요 어노테이션 설명 @Min(value=*): value에 입력된 수치보다 크거나 같아야 한다 @Max(value=*): value에 입력된 수치보다..
Spring - ErrorController Spring Boot Application을 만들면서, 404 Page Not Found에 대한 처리를 커스텀해야할 상황이 생겼다. 스프링에서는 기본적으로 에러처리를 아래와 같은 방법으로 처리해준다. (링크 1.기본적인 에러 처리 참고) [스프링부트 (12)] SpringBoot 에러 페이지 설정(Custom Error Page) [스프링부트 (12)] SpringBoot 에러 페이지 설정(Custom Error Page) 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ Spring Boot Custom Error Page ] 입니다. : ) 0. 에러 페이지를 만들기 앞서 개발.. goddaehee.tistory.com 링크 내용에서도 언급했듯이, BasicErrorController라는 곳에서 기본적인..
Spring - Filter, InterCeptor, AOP 1] Filter 2] InterCeptor 3] AOP 이 세가지 기능은 비슷한 역할을 한다. 이들을 작업할 때 공통되는 부분을 중복코드를 방지하기 위해 묶어주는 역할을 한다. 이 기능들은 Spring에서 제공해준다. 그렇다면, 차이점은 어디에 있을까? 흐름은 아래 그림과 같다. 차이점은 실행하는 위치가 다르다. 흐름: Filter -> InterCeptor -> AOP -> InterCeptor -> Filter Filter Filter는 Servlet이 실행되는 동안에 Init가 실행되고, doFilter가 실행된다. [인코딩 변환 처리, XSS방어 등의 요청에 대한 처리부에 주로 사용] // Filter 예제코드. Filter 인터페이스를 오버라이딩하여 구현한다. import javax.servl..
Spring - Log4j2 log4j2, logback과 같은 로깅시스템은 왜사용할까?? 자바에서는 출력을 System.out으로도 할 수 있는데 문제는 운영이다. 개발시에 개발자가 출력한 System.out구문을 모두 제거하지 않았다면 운영시에 계속 로그가 출력되고 이것은 리소스 낭비를 초래한다. 그렇다고 개발자가 배포시에 모두 찾아서 지우는것 또한 일이다. 또한 운영시에 중대한 오류가 발생하였다고 했을때, 출력되는 로그가 없다고하면 그것 또한 문제를 찾기 위해 엄청난 시간과 노력이 들어간다. 이처럼 운영상에 로그를 남기지 않고 개발시에만 로그를 남김으로써 리소스 낭비를 줄일 수 있고 필요시에는 로그를 남겨서 오류 추적시에 사용될 수 있다. log4j의 프로젝트는 이미 종료되었고 추가적인 업데이트가 이루어지지 않는다. 현재는 l..
Spring - Swagger Swagger란? RestAPI로 개발시 문서를 자동으로 만들어주는 프레임워크 서비스의 API들에 대한 테스트를 해볼 수 있는 도구 해당 API의 스펙을 자동으로 문서화할 수 있다. API의 입력값 예시, 응답값, 오류 코드 등 확인하기 편리하다. 의존성 추가 swagger를 사용하기 위해서는 SPringfox-swagger2를 의존성에 추가해야함. implementation group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2' implementation group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2' Swagger 실행 Swagger설정 값을 스프링 Bean에..
Spring - RestTemplate = RestTemplate 이란? Spring에 내장되어있는 클래스중 하나로써, Rest방식의 API를 호출할 수 있다. Spring 3.0부터 지원한다. REST API 호출 이후, 응답을 받을 때까지 기다리는 동기 방식으로 http 통신에 유용하게 쓸 수 있다. (비 차단 및 비동기 방식도 지원) JSON, XML 등의 데이터를 쉽게 응답 받을 수 있다. = RestTemplate의 동작구조 (1) Application이 RestTemplate를 생성하고 URL, HTTP메소드 등의 헤더를 담아서 Request한다. (2) RestTemplate는 HttpMessageConverter클래스를 사용하여 RequestEntity를 요청 메시지로 변환한다. (3) RestTemplate는 ClientHtt..
Spring - ResponseEntity ResponseEntity는 무엇이며, 왜 사용하는 것일까? : Spring Framework에서 제공하는 클래스 중에 HttpEntity라는 클래스가 존재하는데, 이는 HTTP 요청(Request) 또는 응답(Response)에 해당하는 HttpHeader, HttpStatus를 포함하는 클래스이다. 이 HttpEntity 클래스를 상속받아 구현한 클래스가 ResponseEntity이다. 즉, 사용자의 HttpRequest(요청)에 대한 응답 데이터를 포함하는 클래스이며, 상태값(status), 헤더(header), 응답데이터(responsedata)에 대한 정의가 가능하다. 아래 예제 코드는 Response라는 공용 class를 정의하고, API에 대한 return Class를 ResponseEnti..
Etc - Mac OS Big Sur기준 로컬 Java프로젝트 구동시 지연현상 기록 회사에서, 터치바가 번쩍이는현상 문제가 생겨서 (한 1년정도 이러고살은듯..)..ㅠㅠ 노트북 교체 신청하여 새맥북을 받았다.. (여기까지는 TMI..) 당연히(?) Java JDK, HOSTS 등.. 모든 세팅이 다 초기화되어있었다. 내가 작업하던 프로젝트들도 git에서 새로 clone해와서 로컬에서 돌리려고 하는데.. 기이한 현상이 벌어졌다. 2018090003:~ we$ javac -version javac 1.8.0_302 2018090003:~ we$ java -version openjdk version "1.8.0_302" OpenJDK Runtime Environment (Zulu 8.56.0.21-CA-macosx) (build 1.8.0_302-b08) OpenJDK 64-Bit Serve..
Spring - Mybatis FrameWork 개념 및 설정 MyBatis란? : 자바 오브젝트와 SQL사이의 자동 매핑 기능을 지원하는 ORM 프레임워크이다. Hibernate나 JPA처럼 새로운 DB프로그래밍 패러다임을 익혀야하는 부담 없이 SQL 쿼리를 그대로 사용한다. 따라서, 복잡한 쿼리에도 대응이 가능하다. 도메인 객체나 VO객체를 중심으로 개발이 가능하다. (개발자가 정의하는 DTO, VO 등의 클래스 매핑이 가능) SQL을 별도의 파일(.xml)로 분리해서 관리하게 해준다. 또한, JDBC코드 작성의 불편함도 해소된다. JDBC는 DB연동에 필수적으로 사용하는 것인데, JDBC만 사용하여 쿼리문을 작성하면, java코드와 쿼리코드가 겹치면서 관리가 어렵게 되는데, Mybatis는 이 둘을 분리시켜서 저장관리 할 수 있게 해주며, 내부적으로 JDBC와..