Develop21 [Spring Web MVC] Request Mapping - Parameters, headers Parameters, headers 요청 매개변수 조건에 따라 요청 매핑의 범위를 좁힐 수 있다. 요청 매개변수(myParam)가 있는지, 없는지(!myParam) 또는 특정 값(myParam=myValue)이 있는지 테스트할 수 있다. // 매개변수 - 특정 값 존재 여부 테스트 @GetMapping(path = "/pets/{petId}", params = "myParam=myValue") public void findPet(@PathVariable String petId) { // ... } 요청 헤더 조건에 따라서도 요청 매핑의 범위를 좁힐 수 있다. // 헤더 - 특정 값 존재 여부 테스트 @GetMapping(path = "/pets/{petId}", headers = "myHeader=myV.. 2023. 4. 17. [Spring Web MVC] Request Mapping - URI patterns URI patterns @RequestMapping 메서드는 URL 패턴을 사용하여 웹 요청을 컨트롤러 메서드에 매핑 가능하다. PathPattern URL 경로와 미리 분석된 PathContainer에 대해 미리 파싱된 패턴을 매칭한다. 웹 사용에 최적화되어 인코딩 및 경로 매개변수 처리에 더 효과적이고 효율적이다. Spring WebFlux에서 사용되는 유일한 방식이다. 버전 5.3부터 Spring MVC에 적용되었으며, 버전 6.0부터 기본 설정으로 활성화되었다. AntPathMatcher 문자열 패턴을 문자열 경로와 매칭한다. 스프링 구성에서 클래스 경로, 파일 시스템 및 기타 위치에 있는 리소스를 선택하는 데 사용된다. 문자열 경로 입력은 인코딩 및 URL 관련 문제를 처리하는 데 덜 효과적이며.. 2023. 4. 17. [Spring Web MVC] Request Mapping 특징 Spring MVC에서 HTTP 요청을 처리하는 메서드 혹은 클래스에 적용 클래스에 적용할 경우, 해당 클래스의 모든 메서드에 공통 URL 접두사 적용 다양한 속성(URL, HTTP 메서드, 요청 매개변수, 헤더, 미디어 타입)을 통해 요청과 이를 처리할 메서드를 매핑한다. 속성 RequestMapping의 Composed Annotations Spring MVC에서 HTTP 요청을 처리하는 메서드 혹은 클래스에 적용 2023. 4. 17. [Spring Web MVC] @Controller vs @RestController @Controller 특징 클래스 수준 어노테이션 일반적으로 Spring Web MVC 애플리케이션에서 HTTP 요청을 처리하는 클래스에 사용 @Component을 확장한 어노테이션 컴포넌트 스캔이 활성화되면 이를 감지하여 빈으로 자동 등록 Request Mapping 정의 @RequestMapping, @GetMapping, @PostMapping 및 기타 HTTP 관련 어노테이션으로 정의된 메서드를 통해 사용 장점 컨트롤러는 Spring이 컨트롤러 빈의 수명 주기를 자동으로 관리할 수 있도록 하여 개발 프로세스를 간소화합니다. 컨트롤러 레이어와 다른 애플리케이션 레이어 간의 문제를 명확하게 분리하여 모듈화되고 유지 관리 가능한 코드를 촉진합니다. 데이터 바인딩, 유효성 검사 및 예외 처리와 같은 다른.. 2023. 4. 17. 표준 예외 vs 사용자 정의 예외 표준 예외 vs 커스텀 예외 표준 예외 장점 : 익숙한 예외이기 때문에 사용하기 쉽고, 가독성이 높아진다. 단점 : 표준 예외로 제공하는 정보가 부족한 경우도 있다. 커스텀 예외 장점 표준 예외보다 많은 정보(예외의 이름, 예외 메시지, 에러코드 등)를 제공할 수 있다. 단점 커스텀 예외가 지나치게 많아진다면 예외 생성 비용이 비싸진다. 직렬화에 따른 부담이 많아질 수 있다. 주로 사용되는 표준 예외 예외 주요 사용처 IllegalArgumentException 허용하지 않는 값이 인수로 건네졌을 때 (null은 따로 NullPointerException으로 처리) IllegalStateException 객체가 메서드를 수행하지게 적절하지 않은 상태일 때 NullPointerException null을 .. 2023. 4. 5. try-finally와 try-with-resource 자바 라이브러리에는 close메서드를 호출해 직접 닫아줘야하는 자원이 많다. InputStream, OutputStream, Connection 자원 닫기는 클라이언트가 놓치기 쉬워서 예측할 수 없는 성능 문제로 이어지기 도 한다. finally 블럭 try-catch문과 함께 예외 발생 여부에 관계 없이 실행되어야할 코드를 포함시키기 위해 사용 try { // 예외가 발생할 수 있는 코드 } catch { // 예외 처리를 위한 코드 } finally { // 예외 발생 여부와 관계없이 항상 실행되어야하는 코드 // finally 블럭은 항상 try-catch문의 마지막에 위치한다. } 순서 예외 발생 시, try-catch-finally 예외 미발생 시, try-finally 자원 반납법 하나만 반납.. 2023. 4. 5. 추상 클래스와 인터페이스 공통점 자바에서 타입을 정의하는 방법이다. 추상 메서드를 가지며, 반드시 구현해야한다. 추상클래스 : 추상메서드를 가지는 클래스 인터페이스 : 모든 메서드가 public abstract이며, 해당 제어자는 생략가능하다. * 스스로 생성자를 통해서 인스턴스를 생성할 수 없다. 추상 클래스 : 상속을 통해 자식 클래스의 인스턴스를 생성한다. 인터페이스 : 인터페이스를 구현한 클래스를 통해 인스턴스를 생성한다. 차이점 추상클래스 인터페이스 객체이므로, 상태와 행위를 가진다. (= 추상메서드 외에 필드와 생성자, 메서드를 가질 수 있다.) 명세이므로, 행위만을 정의한다. (= 추상 메서드와 상수만을 가진다.)* Object 클래스를 상속하므로, equals와 hashcode를 재정의할 수 있다. Object 클.. 2023. 4. 4. 다형성 다형성의 정의 객체지향적 개념 하나의 객체가 여러가지 형태(타입)를 가질 수 있는 능력 자바 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함 특징 조상클래스 타입의 참조변수로 자손 클래스의 인스턴스를 참조할 수 있다. 같은 타입의 인스턴스일지라도, 참조 변수의 타입에 따라 사용할 수 있는 멤버의 개수가 달라진다. 자손클래스 타입의 참조변수로 조상 클래스의 인스턴스를 참조할 수 없다. 조상 클래스에는 존재하지 않는 멤버를 사용할 가능성이 있으므로 컴파일 에러가 발생한다. (= 참조 변수가 사용할 수 있는 멤버의 개수가 실제 인스턴스의 멤버 개수보다 작거나 같아야한다.) 참조변수의 다형성 방법 : 괄호 안에 변환하고자 하는 클래스명(타입의 이름) 명시 조건 : 서로 상속 관계에 있는 클래스 사.. 2023. 4. 4. 제어자 제어자의 정의 클래스, 변수 또는 메서드의 선언부에 사용되어 부가적인 의미 부여 크게 접근 제어자와 그 외 제어자로 나눌 수 있다. 접근 제어자는 두 개 이상 같이 사용할 수 없으나, 기타 제어자는 조합에 따라 여러개를 함께 사용할 수 있다. (한 선언부에 접근 제어자는 하나, 그 외 제어자는 여러개) 정의 멤버 또는 클래스에 사용되며, 해당하는 멤버 또는 클래스를 외부에서 접근할 때 제한해주는 역할 사용 장소 클래스 멤버 변수 생성자 사용 이유 외부로부터 데이터를 보호하기 위해서 (정보은닉, 캡슐화) 외부에서 사용하지 않는 내부적으로만 사용되는 부분을 감춰 복잡성을 줄이기 위해서 종류 public 접근 제한이 없는 상태 protected 같은 패키지와 다른 패키지의 자손클래스에서 접근 가능 (defau.. 2023. 4. 4. 이전 1 2 3 다음