본문 바로가기

SpringFramework/Spring

(18)
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..
Spring - Mybatis FrameWork 개념 및 설정 MyBatis란? : 자바 오브젝트와 SQL사이의 자동 매핑 기능을 지원하는 ORM 프레임워크이다. Hibernate나 JPA처럼 새로운 DB프로그래밍 패러다임을 익혀야하는 부담 없이 SQL 쿼리를 그대로 사용한다. 따라서, 복잡한 쿼리에도 대응이 가능하다. 도메인 객체나 VO객체를 중심으로 개발이 가능하다. (개발자가 정의하는 DTO, VO 등의 클래스 매핑이 가능) SQL을 별도의 파일(.xml)로 분리해서 관리하게 해준다. 또한, JDBC코드 작성의 불편함도 해소된다. JDBC는 DB연동에 필수적으로 사용하는 것인데, JDBC만 사용하여 쿼리문을 작성하면, java코드와 쿼리코드가 겹치면서 관리가 어렵게 되는데, Mybatis는 이 둘을 분리시켜서 저장관리 할 수 있게 해주며, 내부적으로 JDBC와..
Spring Package 구조와 역할 스프링에서 사용하는 패키지(package)단위의 구분. 패키지 구조 설계는 프로젝트마다 그리고 개발자마다 다를 것이며, 사용되는 프레임워크나 서비스에 맞게 설계되는 것이 일반적이다. 정해진 답은 없다. = controller 클라이언트의 요청이 진입하는 포인트. 요청에 따라 어떤 처리(수행할 비즈니스로직)를 할지 결정해주며 처리된 로직 및 데이터를 View 혹은 정의내린 포맷에 맞게 응답을 보내주는 중간 제어자이다. 우리가 흔히 알고있는 MVC패턴의 그 Controller가 맞다. 스프링에서는 @Controller 어노테이션을 선언하여 스프링 Bean에 등록한다. = service 비즈니스 로직을 처리한다. controller에서 받은 요청을 처리할 때, 필요한 데이터를 dao객체(mapper, repo..
Jenkins를 이용한 서버 Spring Boot 배포 - pipeline ubuntu서버 1대에 Spring Boot 프로젝트 구동 배포 pipeline 구축에 대해서 소개한다. [참고사항] - 개발환경으로는 사용이 가능할 수 있으나, 실제 운영환경에서는 적합하지 않습니다. - Load Balencer가 적용되지 않으며, 접근할 수 있는 DNS 및 공인 IP가 등록되어있어야 합니다. - Blue/Green (무중단)배포가 아닌, 배포진행중에는, 프로젝트가 중단되어버리는 방법입니다. 1] General 2] 소스 코드 관리 3] Build (!) 정렬 순서에 맞게 동작하므로, 순서에 유의할 것. - Execute shell : 기존에 떠있는 java springboot 프로젝트를 제거 $ kill -9 $(ps -ef | grep 'ep-java-gradle-exam' | gr..
Spring - 자주사용하는 Annotation 정리 @Autowired : 의존성을 주입하여 자동을 객체를 생성해주며 메소드 위에 사용할 경우 기본생성자를 만들어준다. @Autowired 는 타입에 따라 매핑되기 때문에 동일 인터페이스를 상속받을 경우 구분의 모호함이 발생할 수 있음. @Configuration : 스프링 설정 클래스 선언 @Bean : 스프링 빈으로 선언. (스프링 컨테이너에서 관리하는 하나의 객체) (!) Bean은 싱글톤 객체이므로, 몇번을 호출하더라도, 한 개의 객체만을 생성하는 특징을 지닌다. @Scope : 스프링에서 Bean으로 지정된 객체는 기본적으로 싱글톤 객체로 관리되지만, 상황에따라서 다르게 부여할 수 있다. default는 singleton. ex) @Scope("prototype") - singleton : 기본 싱..
Spring - 스프링 프레임워크 기본개념 정리 1] 개요 Spring FrameWork는 EJB(Enterprise Java Bean)를 주 프레임워크로 사용할 때 불편했던 부분을 해소 (EJB가 너무 스펙이 좋지않아서..) 2003년 6월 Apache 2.0 License로 공개가 되었다 = 장점 1] 생산성 => 스프링은 개발자가 이론적으로는 알아야 하는 부분이 많지만, 결과적으로 작성하는 코드의 양은 줄어든다. 2] 품질보증 => 프레임워크는 개발에 필요한 구조가 절반정도는 만들어져 있기 때문에, 필요한 부분만 조립하는 형태로 개발이 가능하다. 프레임워크를 사용하면 회사 입장에서는 일정한 품질이 보장되는 결과를 얻을 수 있다. 3] 유지보수 => 코드의 의존관계가 명시되지 않으므로 결합도가 낮아지기 때문에 유지보수가 편리해진다. = 스프링 프레..