Programming/Java

[Java] 객체지향의 핵심 개념 & Spring Boot란?

디아쿠 2024. 12. 29. 20:45

1. 객체지향의 핵심 개념

 

다들 개발을 시작하면서 객체지향 프로그래밍에 대해 많이 들어봤을 것이다.

객체지향 프로그래밍은 데이터를 객체로 모델링하고, 객체 간 상호작용으로 프로그램을 구성하는 방법이다.

Java는 대표적인 객체지향 언어이다.

 

그 중 4대 핵심 개념이 있는데

1. 캡슐화 (Encapsulation)

데이터를 클래스 내부에 감추고, 외부에는 필요한 기능만 노출하는 방식이다.

 

2. 상속화 (Inheritance)

기존 클래스의 속성과 메서드를 재사용하여 새로운 클래스를 만드는 것이다.

 

3. 다형성 (Polymorphism)

하나의 메서드가 다양한 클래스에서 다른 동작을 하도록 구현하는 방식이다.

 

4. 추상화 (Abstraction)

불필요한 세부 사항을 숨기고 필요한 것만 드러내는 설계 방식이다.


2. Spring Boot와 Spring Framwork의 차이점

 

2-1. Spring Framework란?

자바 기반의 애플리케이션 개발을 위한 프레임워크로, 다양한 기능(예: DI, AOP, 트랜잭션 관리)을 제공합니다.

다만 설정이 복잡하고 초기 설정 시간이 오래 걸릴 수 있습니다.

 

2-2. Spring Boot란?

Spring Framework의 하위 프로젝트로, 복잡한 설정을 자동화하여 빠르게 애플리케이션을 개발할 수 있도록 도와줍니다.

장점:

빠른 설정(자동 설정 제공)

내장 서버(Tomcat, Jetty 등)

간단한 의존성 관리

 

2-3. Spring Boot의 주요 기능

Dependency Management: Maven/Gradle로 필요한 라이브러리를 간단히 추가.

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
}

 

 자동 설정: @SpringBootApplication만으로 애플리케이션 시작 가능.

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

 

내장 서버: Tomcat 내장.

별도의 설정 없이도 서버가 실행됨.

 


3. DI(Dependency Injection)란?

 

3-1. 의존성 주입이란?

객체 간의 의존 관계를 개발자가 직접 설정하지 않고, Spring이 대신 주입해주는 방식입니다.

이를 통해 코드의 결합도를 낮추고 테스트를 쉽게 만듭니다.

 

3-2. DI의 예

의존성을 직접 생성하지 않고, 생성자를 통해 주입받음.

public class Car {
    private Engine engine;

    @Autowired
    public Car(Engine engine) {
        this.engine = engine;
    }
}

 

 


4. Spring Data JPA의 주요 개념과 사용법

 

4-1. JPA란?

자바 객체와 데이터베이스 간의 매핑을 도와주는 표준 ORM 기술.

 

4-2. Spring Data JPA

JPA를 더 쉽게 사용할 수 있도록 도와주는 Spring 모듈.

간단한 CRUD 작업을 자동으로 제공.

 

4-3. 예시

Entity 정의:

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String email;
}

 

오늘은 개념적인 요소들 위주로 살펴보았습니다.

이 주제들을 기반으로 각각 자세히 학습하면 기본기를 탄탄히 다질 수 있습니다. 오늘도 열심히 공부해서 더 나아가도록 하겠습니다.

 

 

728x90