JAVA의 객체지향(OOP)
- 객체지향 프로그래밍(Object-Oriented Programming)은 프로그램을 개체들의 집합으로 파악하고 구현하는 프로그래밍 패러다임
- 코드의 재사용성, 확장성 관리 용이성을 높이는데 기여
- 현실 세계의 사물을 객체로 모델링하여 프로그램을 이해하기 쉽고 유지보수하기 편리하게 만듦
캡상추다(캡슐화, 상속, 추상, 다형성)
- 캡슐화(Encaosulation) – 객체의 상세구현을 숨겨 객체의 데이터를 보호하고 객체 간의 결합도를 낮춤
- 상속(Inherritance) – 한 클래스가 다른 클래스의 특성을 물려줄 수 있게 상속, 코드의 재사용성을 높이고, 중복을 줄임
- 다형성(Polymorphism) – 같은 이름의 메서드가 다른 클래스에서 다른 동작을 할 수 있는 성질(오버로딩, 오버라이딩)
- 오버로딩 – 같은 이름의 메서드를 매개변수의 유형 혹은 개수를 다르게 해 여러 개를 정의
- 오버라이딩 – 상속받은 메서드의 내용을 변경
- 추상화(Abstraction) – 필요한 정보만을 추출하여 프로그램에 구현하는 것(추상클래스, 인터페이스)
SPRING
IoC 컨테이너
- 객체의 생명주기와 의존성을 관리하는 프레임워크의 핵심 부분입니다. 의존성 주입을 통해 객체 간의 결합도를 낮추고, 코드의 유연성과 재사용성을 높임
의존성 주입(Dependency Injection,DI)
- 객체 간의 의존성을 외부에서 관리하고 주입
- 객체의 생성과 사용을 분리함으로써 코드의 결합도를 낮추고 유연성 및 테스트 용이성을 향상
DI 3가지 주요 유형
- 생성자 주입: 객체 생성 시점에 의존성 주입. 불변성 및 필수 의존성 주입에 적합.
- 세터 주입: 객체 생성 후 세터 메서드를 통해 의존성 주입. 선택적 의존성에 유용.
- 필드 주입: 리플렉션을 사용하여 필드에 직접 의존성을 주입. 간결하지만 테스트와 변경에 제한적.
Spring에서 의존성 주입을 구현하기 위해 주로 @Autowired 어노테이션을 사용, Spring은 실행 시점에 @Autowired가 붙은 필드, 세터, 생성자에 알맞은 빈을 자동으로 주입
어노테이션:
• @Autowired: 자동 의존성 주입을 위한 어노테이션.
• @Qualifier: 특정 빈을 지정하여 주입할 때 사용.
• @Bean: 자바 설정 파일에서 빈을 정의할 때 사용.
Bean
- Spring IoC 컨테이너가 관리하는 객체를 의미
- 애플리케이션의 핵심을 이루는 구성 요소로, Spring 프레임워크의 제어하에 인스턴스화, 관리되며, 의존성 주입을 통해 서로 연결
AOP
- 관점 지향 프로그래밍의 구현을 지원하는 Spring Framework의 기능 중 하나
- 애플리케이션의 핵심 기능 외에도 공통 기능(로깅, 트랜잭션 관리, 보안 등)을 모듈화하여 분리하는 프로그래밍 패러다임
- 이러한 공통 기능을 재사용 가능한 모듈(Aspect)로 분리하고, 이를 필요한 코드에 적용함으로써 코드의 중복을 줄이고 모듈화를 촉진
RESTful API(Representational State Transferful API)
- REST 아키텍처 스타일을 따르는 웹 API
- 자원(Resource)을 이용하여 클라이언트와 서버 간의 통신을 담당
- HTTP 프로토콜을 기반
- 간결하고 유연한 인터페이스를 제공하여 다양한 플랫폼과 서비스 간의 통신을 용이
DB
Index
- 데이터베이스에서 검색 속도를 향상시키기 위해 사용되는 데이터 구조
- 특정 열(칼럼)에 대한 데이터 값과 해당 데이터가 저장된 레코드의 위치를 매핑한 테이블
- 데이터베이스에서 데이터를 검색할 때 인덱스를 사용하면 검색 속도가 향상되며, 데이터의 빠른 접근이 가능
- 주로 검색, 정렬, 조인 등의 연산에서 사용
- 효율적인 데이터베이스 성능을 위해 필수적인 요소 중 하나