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..
나중에 찾아보고 사용하기 위해 정리합니다. ㅎㅎ 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..
레거시한 프로젝트를 전부 @Aspect 로 바꿀 일이 생겨공부하는 겸 정리했습니다. 들어가기 앞서 기본적으로 빈후처리기, 프록시팩토리 등 기본지식이 있어야 이해하실 수 있습니다.설치dependencies {implementation 'org.springframework.boot:spring-boot-starter'implementation 'org.springframework.boot:spring-boot-starter-aop' //직접 추가 @Aspect@Slf4j@Aspectpublic class AspectA1 { // hello.aop.order 패키지와 하위 패키지 @Around("execution(* hello.aop.order..*(..))") public Object doL..
@Aspect 를 사용하다 순수 Proxy 를 사용할 일이생겨 정리해보았습니다. 순수 프록시"프록시를 직접 만든다" 는 건 ProxyFactory 도 없이 클래스를 하나 더 만들어서 진짜 객체를 감싸는 것을 말합니다.진짜 서비스public interface Service { void doService();}public class RealService implements Service { @Override public void doService() { System.out.println("🎯 실제 서비스 실행"); }} 프록시 클래스진짜 RealService 를 감싸서 부가기능을 추가하는 프록시를 만듭니다.public class ServiceProxy implements ..