Spring - 시작하기

김형석·2025년 6월 21일
0

LG CNS AM Inspire Camp

목록 보기
13/18

1. Spring 프로젝트의 구성요소

1-1. 설정

  • JDK: 프로젝트의 버전
  • 스프링 개발 도구 모음: Spring tool suite(STS) 등 개발 도구 모음

1-2. 의존성 관리

  • pom.xml: Maven 기반 프로젝트 의존성 관리
  • .gradle: Gradle 기반 프로젝트 의존성 관리

1-3. 실행 메서드(부트스트랩 메서드)의 어노테이션

  • @Configuration
    • 스프링 설정 클래스
    • AnnotationConfigApplicationContext 클래스와 연관
  • @Bean
    • 메서드를 Spring Bean으로 만들어줌 -> 메서드를 스프링 관리 대상으로 설정
    • getBean()으로 활용 가능(단, 객체 선언이 우선되어야 함)
    • getBean() 대신 Application Context를 호출해서 사용할 수 있음
      • 작업의 위임 달성으로 비즈니스 로직만 고려 대상이 됨
      • 의존성 주입(DI)의 수행 과정

2. Spring의 특징

2-1. 제어 역전

  • 생성, 소멸 등의 작업을 Bean에 위임
  • Bean Factory에서 시작되는 작업

2-2. 상속을 거쳐 구체화, 확장됨

  • Bean의 상속은 내용을 구체화하고 기능을 추가함
  • 초기화 방법
    • BeanFactory: 지연 초기화(객체 필요 시점에 초기화)
    • ApplicationContext: 즉시 초기화(컨테이너 시작 시 모든 객체를 싱글톤으로 초기화)

2-3. Bean은 싱글톤

  • 인스턴스는 항상 하나만 생성된다

2-4. AnnotationConfigApplicationContext로 설정

  • 과거
    • XML 기반
    • GenericXmlApplicationContext -> 소스 코드와 설정을 분리
  • 현재
    • GenericGroovyApplicationContext -> Groovy
    • AnnotationConfigApplicationContext
  • 특징
    • 객체 생성이 불필요 -> Bean 객체가 싱글톤 범위이기 때문
    • private 생성자로 생성 및 접근 통제

3. 싱글톤의 특징

  • 생성자가 Private이다
  • getInstance로 인스턴스를 반환하며, static 타입이다 -> 이로 인해 필드도 static 타입이 됨
  • Spring에서 @Bean 어노테이션의 기본값이며, 하나의 객체만 생성되는 원인
  • 싱글톤으로 만들어진 객체는 여러 참조 변수에서 참조하더라도 하나의 주소만 참조 대상이 됨

4. 의존

4-1. 정의

  • 한 클래스가 다른 클래스의 메서드를 사용하는 것
  • 변경에 영향을 받으며, 코드 변경 시 해당 코드를 사용하는 대상도 변경해야 함
  • 즉, 변경이 많아지면 바꾸는 소스코드 양도 많아질 가능성이 있음

4-2. 의존 객체 설정하기

  • 의존 대상 객체를 직접 설정
    • 객체를 직접 만들기
    • 구현에는 용이하지만 유지보수가 어려움
  • DI 활용
    • 의존 객체를 전달하기만 함 -> 생성자 활용
    • 의존 객체 주입부만 수정해서 변경을 반영할 수 있음
    • 의존 강도가 낮아짐

4-3. 의존성 낮추기

  • 인스턴스를 외부에서 만들어서 상속하기 -> 의존성 역전(DI)
    • 방법
      • 생성자 활용
      • Setter 메서드 활용
    • 프로젝트 구조를 알고 있어야 한다는 단점 존재
    • @Autowired 어노테이션을 사용해서 의존 주입 코드 생략 가능

5. Spring의

0개의 댓글