SwaggerSwagger 는 REST API 를 문서화하고, 웹 UI 를 통해서 테스트까지 할 수 있게 도와주는 도구입니다. Swagger 는 API 의 메뉴판이라는 말도 있습니다.개발자가 만든 API(서버 기능 목록) 을 정리해서 보여주며, 웹 화면으로 API 를 직접 눌러보고 테스트 할 수 있습니다.또한 문서를 따로 쓰지 않아도 코드에 따라 자동으로 만들어줍니다.즉, Swagger = API 메뉴판 + 테스트 도구 사용하는 이유 예를 들어, 개발자가 "로그인 API" 를 만들었다고 해봅시다. API 주소: POST /login요청(Request): id, password응답(Response): 200 성공, 400 실패 위와 같은 요구사항이 발생했을 때 문서로 정리를 하지 않는다면 팀원들이 헷갈..
간단한 용어설명WAS(웹 애플리케이션 서버 Tomcat, 웹 서버 + 서블릿 컨테이너 기능 제공)서블릿 컨테이너(Catalina, 서블릿을 관리하는 곳, Tomcat 이라고도 함)스프링 컨테이너(Controller, Service 등 Bean 을 관리하는 곳)서블릿(Servlet, Client 의 모든 요청을 받아서 -> 스프링이 만든 Controller 에게 배분)WARWAR(Web Application Archive) 라는 이름에서 알수가 있듯이 WAR 파일은 웹 애플리케이션 서버(WAS) 에 배포할 때 사용하는 파일입니다. JAR 파일이 JVM 위에서 실행된다면, WAR 는 웹 애플리케이션 서버(WAS) 위에서 실행됩니다.HTML 같은 정적 리소스와 클래스 파일을 모두 함께 포함하기 때문에 JAR ..
외부설정이란하나의 애플리케이션을 여러 다른 환경에서 사용해야 할 때가 있습니다.개발환경, 운영환경에 따라 URL, DB 경로등을 다양하게 설정해야 하기 때문에 외부 설정이 필요합니다. 그래서 개발용 app.jar, 운영용 app.jar 파일을 설정하는 것이 아니라 하나의 app.jar 를 개발하고 배포한 뒤에 각 환경에 맞추어 실행 시점에 외부 설정값을 주입하면 한번만 빌드해도 되고, 개발버전과 운영버전의 빌드 결과물이 같기 때문에 개발환경에서 검증되면 운영 환경에서도 믿고 사용할 수가 있습니다.유지보수하기 좋은 애플리케이션 개발의 가장 큰 기본 원칙은 변하는 것과 변하지 않는 것을 분리하는 것입니다. 외부설정방법외부 설정을 하는 방법은 일반적으로 다음 4가지 방법이 있습니다.1. OS 환경변수2. 자바..
OSIV (open Session/Entitymanger In View) 이 글은 JPA에 대한 기본 지식을 가지고 있다고 가정하며 설명했습니다. OSIVOSIV 의 전제 조건은 "요청(Request) 전체 동안 영속성 컨텍스트를 열어 둘 것인가?" 라는게 OSIV 의 핵심입니다.JPA 에서는 데이터를 가져올 때 EntityManger(영속성 컨텍스트) 라는 "문" 을 열어주어야 합니다.이 문을 언제 닫느냐가 OSIV 설정에 따라 달라지게 됩니다. OSIV 에서는 설정이 2가지가 있습니다. ON, OFF 입니다.ON 은 요청이 시작해서 끝날 때까지 문을 계속 열어두는 것이고, OFF 는 서비스(Service, 비즈니스로직) 이 끝나면 바로 문을 닫는 것입니다. ON 일때영속성 컨텍스트 범위를 Filter..
JPA 에 대해서 어느 정도 알고 있다고 가정하고 정리한 글입니다. JPA 에서 1:N(OneToMany) 연관관계에서 페이징이 불가능한 이유는 JPA 가 SQL 을 생성하는 방식과 관련이 있습니다. JPA 의 OneToMany 기본 매핑@Entitypublic class Member { @Id @GeneratedValue private Long id; private String name; @OneToMany(mappedBy = "member") private List orders = new ArrayList();} 위의 코드는 Member -> Order 는 1:N 관계입니다. JPA 가 SQL 을 어떻게 날리는가?Member 를 조회할 때 orders 정보도 필요하여 orders C..
나중에 찾아보고 사용하기 위해 정리합니다. ㅎㅎ Entity@Entitypublic class user { @Id @GeneratedValue private Long id;} 해당 클래스가 JPA 에서 관리하는 Entity Class 임을 나타냅니다.해당 Class 는 DB 의 Table 로 Mapping 되며, 기본생성자(public or protected) 가 꼭 필요합니다.또한 해당 Class 에는 @Id 가 붙은 필드가 하나 이상 있어야 합니다. 다른 코드들을 보면 기본 생성자를 안 넣고 @Entity 를 사용해도 오류가 발생하지 않는데 그 이유는 자바는 생성자를 하나도 안 만들면 컴파일러가 자동으로 기본 생성자를 만들어 주기 때문입니다. Table@Entity@Table(name = "use..
CORS 란?Cross-Origin Resource Sharing 의 줄임말로 웹 브라우저에서 다른 출처의 리소스 공유에 대한 허용/비허용을 다룬 보안 정책입니다.예를 들어, 다른 회사의 API 등 다른 도메인의 API(다른출처) 를 이용하고 싶을 때 CORS 허용 설정이 되어 있어야 성공적으로 API 에 접근해 리소스를 공유받을 수 있습니다.CORS 설정방법CORS 에러를 해결하기 위한 여러 방법이 있습니다. WebMvcConfigurer 을 이용해 Spring 서버 전역적으로 설정Spring 서버에 전역적으로 CORS 설정을 해주기 위해서는 아래와 같이 Configuration 어노테이션을 붙인 스프링 설정 클래스를 생성해주어야 합니다.// Spring 서버 전역적으로 CORS 설정@Configura..