AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

스프링 & 스프링 부트 개요

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

- Java 기반 웹 애플리케이션 개발자

- 기존 XML 기반 설정을 사용하는 개발자

- DI, AOP, 자동 설정 기능을 활용한 개발자

- 난이도: 중급/고급 (DI, AOP, 자동 설정 개념 이해 필요)

핵심 요약

  • 스프링 프레임워크의존성 주입(DI)AOP를 통해 모듈 간 결합도를 낮추고 유지보수성을 향상시킨다.
  • 스프링 부트XML 설정 대신 애노테이션 기반 자동 설정을 제공하여 프로젝트 설정 시간을 절감한다.
  • @RestController, @Autowired, @Service 등의 애노테이션을 통해 코드 간결성과 테스트 용이성을 달성할 수 있다.

섹션별 세부 요약

1. 스프링 프레임워크 개요

  • 스프링Java 기반 기업용 애플리케이션 개발을 위한 인프라 제공을 목표로 한다.
  • 의존성 주입(DI)new 키워드 대신 스프링 컨테이너가 객체를 생성 및 주입하여 결합도를 낮춘다.
  • AOP로깅, 보안, 트랜잭션 등 공통 기능을 메인 로직과 분리하여 코드 재사용성 향상에 기여한다.

2. 스프링 부트의 자동 설정

  • XML 설정 대신 pom.xml에 의존성 추가application.properties 또는 application.yml 파일로 구성 가능.
  • @RestController, @Service 등의 애노테이션을 통해 빈 생성 및 주입을 자동화하여 수동 설정 최소화.
  • @Data, @Getter 등의 Lombok 애노테이션을 사용해 Getter/Setter 코드 생성을 생략 가능.

3. DI의 유형 및 장점

  • 생성자 주입: public Car(Engine engine)
  • 세터 주입: @Autowired public void setEngine(Engine engine)
  • 필드 주입: @Autowired private Engine engine
  • DI의 장점:

- 수동 객체 생성 감소

- 결합도 낮추어 유지보수성 향상

4. AOP 예시

  • AOP 없이 로깅 및 권한 체크 코드가 중복되어 복잡도 증가.
  • AOP 사용 시 @Aspect 애노테이션을 통해 공통 로직을 분리하고 모듈화 가능.
  • LogBefore/LogAfter와 같은 어드바이스를 통해 메인 로직과 분리된 처리 가능.

5. JPA 및 스프링 보안

  • JPA: ORM 규칙 정의만 제공하고, Hibernate와 같은 구현체가 실제 데이터베이스 연동.
  • 스프링 보안: 로그인/로그아웃, 역할 기반 권한 관리, 암호화 기능 제공.
  • 스프링 보안 통합: spring-boot-starter-security 의존성 추가 후 URL 접근 규칙 설정 가능.

6. 결합도 비교

  • 강결합: Engine engine = new Engine()변경 시 모든 의존처 수정 필요.
  • 약결합: @Autowired Engine engine의존성 주입으로 변경/테스트 용이.

결론

  • 스프링 부트XML 설정 생략, 자동 구성, 애노테이션 기반 개발을 통해 프로젝트 초기 설정 시간을 대폭 단축.
  • DI와 AOP를 활용하여 코드 중복 제거유지보수성 향상이 가능.
  • @RestController, @Autowired, Lombok 애노테이션 사용을 통해 개발 효율성 극대화.
  • 스프링 보안 모듈을 활용해 로그인/권한 관리를 간단히 구현 가능.