본문 바로가기
Spring Study

스프링 프레임워크의 핵심 3대 요소

by xogns93 2024. 8. 11.

스프링 프레임워크의 핵심 3대 요소는 다음과 같습니다. 이 세 가지 요소는 스프링 프레임워크의 기본 개념이자, 스프링이 제공하는 주요 기능들을 이해하는 데 중요한 역할을 합니다.

1. 의존성 주입 (Dependency Injection, DI)

  • 설명: 의존성 주입은 객체 간의 의존 관계를 설정하는 방법으로, 객체가 필요한 의존성을 스스로 생성하지 않고 외부에서 주입받도록 하는 설계 패턴입니다. 스프링은 DI를 통해 객체 간의 결합도를 낮추고, 코드의 재사용성과 테스트 가능성을 높입니다.
  • 작동 원리: 개발자가 클래스 내에서 객체를 직접 생성하는 것이 아니라, 스프링 컨테이너가 객체의 의존성을 주입해줍니다. 이를 통해 객체 간의 결합도가 줄어들고, 코드의 유연성이 향상됩니다.
  • 사용 예시:위 예시에서 MyServiceMyRepository에 의존성을 가지고 있으며, 스프링은 @Autowired 어노테이션을 사용하여 이 의존성을 주입합니다.
@Service
public class MyService {
    private final MyRepository myRepository;

    @Autowired
    public MyService(MyRepository myRepository) {
        this.myRepository = myRepository;
    }

    // 서비스 메서드
}

 

2. AOP (Aspect-Oriented Programming)

  • 설명: AOP는 횡단 관심사(Cross-Cutting Concerns)를 분리하여 코드의 모듈성을 높이는 프로그래밍 패러다임입니다. 로그 기록, 보안, 트랜잭션 관리와 같은 횡단 관심사를 비즈니스 로직에서 분리함으로써 코드의 중복을 줄이고, 유지보수성을 향상시킵니다.
  • 작동 원리: 스프링 AOP는 프록시 패턴을 사용하여, 메서드 호출 전후에 부가 기능(Aspect)을 적용합니다. 예를 들어, 메서드 실행 전후에 로깅을 추가하거나, 특정 예외가 발생했을 때 추가적인 처리를 할 수 있습니다.
  • 사용 예시:
@Aspect
@Component
public class LoggingAspect {

    @Before("execution(* com.example.service.*.*(..))")
    public void logBeforeMethod(JoinPoint joinPoint) {
        System.out.println("Method called: " + joinPoint.getSignature().getName());
    }
}

위 예시에서는 @Before 어노테이션을 통해, 특정 메서드가 호출되기 전에 로깅하는 기능을 추가합니다.

 

3. POJO (Plain Old Java Object)

  • 설명: POJO는 특정한 프레임워크에 종속되지 않은 단순한 자바 객체를 의미합니다. 스프링은 POJO를 기반으로 애플리케이션을 개발할 수 있게 하여, 개발자가 특정 프레임워크에 의존하지 않고 객체 지향적인 설계를 할 수 있도록 지원합니다.
  • 장점: POJO는 프레임워크에 의존하지 않기 때문에, 더 쉽게 테스트할 수 있고, 코드가 단순하며, 유지보수가 용이합니다. 스프링은 POJO 기반의 개발을 권장하여, 스프링 프레임워크에 대한 종속성을 최소화합니다.
  • 사용 예시:
public class MyPojo {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

위 예시는 어떠한 프레임워크에도 의존하지 않는 단순한 POJO 클래스입니다. 스프링에서 이러한 POJO를 빈(Bean)으로 등록하여 사용할 수 있습니다.

요약

  • 의존성 주입(DI): 객체 간의 의존성을 외부에서 주입하여 결합도를 낮추고, 코드의 유연성을 높이는 설계 패턴입니다.
  • AOP: 횡단 관심사를 분리하여 모듈성을 높이고, 비즈니스 로직과 부가 기능을 분리하여 코드의 유지보수성을 향상시키는 프로그래밍 패러다임입니다.
  • POJO: 특정 프레임워크에 종속되지 않은 단순한 자바 객체로, 스프링은 POJO 기반의 개발을 통해 프레임워크 종속성을 최소화합니다.

이 세 가지는 스프링 프레임워크의 기본 철학을 이루며, 스프링을 이해하고 활용하는 데 필수적인 요소들입니다.