본문 바로가기

의미13

스프링 CORS 해결 방법 + CORS 동작 방식과 의미 안녕하세요, 스코리아입니다.오늘은 CORS가 무엇이고 어떻게 동작하는지 알아본 뒤, 스프링 서버에서 발생하는 CORS 문제의 해결 방안에 대해서 소개해드리겠습니다. 지긋지긋한 CORS 오류Frontend(ex: React)와 Backend(ex: Spring) 서버를 분리하여 작업하다 보면, 한 번쯤은 마주쳤을 'No Access-Control-Allow-Origin' CORS 문제입니다. 처음 CORS 문제를 발견하였을 때, 해결하기 위해 정말 다양하고 기가 막힌(?) 방법을 시도하였던 기억이 있습니다.  CORS 에러는 Frontend와 Backend 서버의 Origin(도메인)이 달라 발생합니다. 아래에서 자세히 살펴보겠습니다. CORS란 무엇인가?CORS란, Cross-Origin Resource.. 2024. 5. 31.
자바 인터페이스 의미, 특징, 선언, 구현 방법 (interface) 안녕하세요, 스코리아입니다. 오늘은 자바 인터페이스의 의미와 특징, 선언, 구현 방법에 대해서 알아보겠습니다. 인터페이스 의미와 역할 개발 코드와 객체가 서로 통신하는 접점 개발 코드는 객체의 내부 구조를 알 필요가 없고 인터페이스의 메소드만 알고 있으면 됨 개발코드가 객체를 종속되지 않게 하여 객체를 교체할 수 있음 개발 코드 변경 없이 리턴값 또는 실행 내용이 다양해짐 (다형성) 인터페이스 특징 인터페이스의 모든 메소드는 추상 메소드로 선언됨 (public abstract) 인터페이스의 모든 변수는 상수로 선언됨 (public static final) 인터페이스 선언 우선 인터페이스를 선언하는 방법은 다음과 같습니다. public interface 인터페이스명{ // 인터페이스 } 인터페이스에는 상수.. 2023. 9. 21.
자바 추상클래스 의미, 구현 방법 (abstract class) 안녕하세요, 스코리아입니다. 오늘은 자바 추상 클래스의 의미와 구현방법에 대해서 알아보겠습니다. 추상 (abstract)이란? 어원적 의미: 실체들 간에 공통되는 특성을 추출한 것 예: 삼성, 현대, LG를 통틀어 "회사"라 함 추상 클래스 (abstract class)란? 실체 클래스(객체를 만들어 사용할 수 있는 클래스)들의 공통되는 필드와 메소드를 정의한 클래스 추상 클래스는 실체 클래스의 부모 클래스 역할을 할 수 있음 (실체 클래스 -> 상속-> 추상 클래스) 추상 클래스 특징 구현 코드 없이 메소드의 선언만 있는 추상 메소드(abstract method)를 포함한 클래스 abstract 예약어 사용 추상 클래스는 단독으로 객체를 생성할 수 없고, 부모 클래스로만 사용 가능 (인스턴스화 불가) .. 2023. 9. 8.
자바 강제타입변환(다운케스팅 형변환) 의미, 사용방법 안녕하세요, 스코리아입니다. 오늘은 자바의 강제타입변환(다운케스팅 형변환)의 의미와 사용방법에 대해서 알아보겠습니다. 이전 시간에 포스팅한 자바의 자동타입변환에 대해서 모르신다면, 아래의 내용을 꼭 참고해 주시기 바랍니다. [이전 내용] 자바 자동타입변환(업케스팅 형변환) 알아보기: https://skorea6.tistory.com/22 강제 타입변환 의미, 특징? 의미 : 부모 타입을 강제적으로 자식 타입으로 변환 (자동적 X) 조건 : 자식 타입이 부모타입으로 자동 변환된 이후, 다시 자식 타입으로 변환할 때만 가능 (부모 타입으로 생성된 인스턴스를 바로 자식 타입으로 변환하는 것은 불가) 필요한 경우 : 자식 타입이 부모타입으로 자동 변환되면, 부모 타입에 선언된 필드와 메소드만 사용 가능. 이에 .. 2023. 9. 6.
자바 메소드 재정의 의미, 사용방법 (@Override) 안녕하세요, 스코리아입니다. 오늘은 자바 메소드 재정의(Overridng)의 의미와 사용방법에 대해서 알아보도록 하겠습니다. [이전 내용 참고] 오버로딩 vs 오버라이딩 : 생성자 오버로딩은 무엇인가? : https://skorea6.tistory.com/7 메소드 재정의 (Method Overriding)란? 상위 클래스에 정의된 메서드의 구현 내용이 하위 클래스에서 구현할 내용과 맞지 않는 경우, 하위 클래스에서 동일한 이름의 메서드를 재정의 할 수 있음 하위 클래스에서 상위 클래스의 동일한 메소드 이름으로 메소드를 다시 정의하는 것을 의미 @Override 애노테이션 애노테이션은 원래 주석이라는 의미 컴파일러에 특정 정보를 주는 역할 @Override 애노테이션은 "재정의 된 메서드"라는 의미로 .. 2023. 8. 31.
자바 자동타입변환(업케스팅 형변환) 의미, 사용 방법 안녕하세요, 스코리아입니다. 오늘은 자바의 자동타입변환(업케스팅 형병환)의 의미와 사용방법에 대해서 알아보겠습니다. 자동 타입변환이란? 프로그램 실행 도중에 자동적으로 타입 변환이 일어나는 것을 뜻함 자식 클래스의 타입은 부모 클래스 타입으로 자동 타입 변환이 일어날 수 있음 자식 클래스는 부모 클래스의 타입을 내포하고 있으므로 부모 클래스로의 묵시적 형 변환이 가능함 상속 관계에서 모든 자식 클래스는 부모 클래스로 형 변환(업캐스팅)이 됨 (단, 그 역은 성립하지 않음) 부모클래스 변수 = 자식 클래스 타입 자동 타입변환된 이후 부모 클래스에 선언된 필드와 메소드만 접근 가능 메소드가 자식 클래스에서 재정의되었다면, 자식 클래스의 재정의된 메소드가 호출 (다형성의 특징) 자동 타입변환의 예시 이전 시간.. 2023. 8. 29.
자바 객체 간의 상속(extend) 의미, 구현방법 안녕하세요, 스코리아입니다. 오늘은 자바 객체 간의 상속의 의미와 구현 방법을 예시와 함께 알아보겠습니다. 클래스 상속 (Class Inheritance) 의미 새로운 클래스를 정의할 때 이미 구현된 클래스를 상속받아서 속성이나 기능을 확장하여 클래스를 구현함 이미 구현된 클래스보다 더 구체적인 기능을 가진 클래스를 구현해야 할 때 기존 클래스를 상속함 상속하는 클래스: 상위 클래스, parent class, base class, super class 상속받는 클래스: 하위 클래스, child class, derived class, sub class 상속 문법 (방법) class B extends A { } 상속을 구현하는 경우 상위 클래스는 하위 클래스보다 더 일반적인 개념, 기능을 가짐 하위 클래스는.. 2023. 8. 25.
자바 ArrayList 주요 메소드 정리, 사용방법 안녕하세요, 스코리아입니다. 이전 시간에는 1차원 배열과 2차원 배열 선언, 초기화 방법에 대해서 알아보았습니다. [이전 내용] 1차원 배열 선언, 초기화 방법: https://skorea6.tistory.com/14 [이전 내용] 2차원 배열 선언, 초기화 방법: https://skorea6.tistory.com/16 오늘은 자바 ArrayList 선언 방법과 주요 메소드를 사용하는 방법에 대해서 알아보겠습니다. ArrayList vs 기존 배열 기존의 배열 선언과 사용 방식은 배열의 길이를 정하고 요소의 개수가 배열의 길이보다 커지면 배열을 재할당하고 복사해야 했습니다. 즉, 배열의 요소를 추가하거나 삭제하면 다른 요소들의 이동에 따른 번거로운 구현이 필요했습니다. ArrayList는 배열의 크기(길.. 2023. 8. 23.
자바 1차원 배열 선언, 초기화 방법 (array) 안녕하세요, 스코리아입니다. 오늘은 자바에서 1차원 배열을 선언하고 초기화하는 방법에 대해서 알아본 뒤, 이를 예제를 통해 사용해 보겠습니다. 배열 (array)란? 동일한 자료형의 순차적 자료 구조 연관된 데이터를 모아서 관리하기 위한 데이터 타입 변수 vs 배열? : 변수는 한 개의 데이터를 저장한다면, 배열은 여러 개의 데이터를 저장합니다. 배열의 특징 인덱스 연산자 []를 이용하여 빠른 참조가 가능 배열의 인덱스(index)는 0부터 시작 물리적 위치와 논리적 위치가 동일 자바에서는 객체 배열을 구현한 ArrayList를 많이 활용함 배열 선언 + 초기화 (1) int[] arr1 = new int[10]; // 방법1 int arr2[] = new int[10]; // 방법2 배열은 위와 같은 .. 2023. 8. 19.