본문 바로가기
개발 개념/이론

[개발 개념] 스프링 프레임워크 이해

by Yikanghee 2022. 3. 8.
  • 자바 기반 오픈소스 프레임워크
  • 20개 이상의 다양한 모듈을 조합하여 프로그래밍 수행
  • 스프링 프레임워크 아키텍쳐
    • Data Access/Integration
      • JDBC
      • ORM
      • OXM
      • JMS
      • Transactions
    • Web
      • WebSocket
      • Servlet
      • Web
      • Portiet
    • AOP
    • Core Container
      • Beans
      • Core
      • Context
      • SpEL
    • Messaging’
  • 경량 컨테이너 지원
    • 객체 생성, 소멸과 같은 생명주기 관리
@Configuration
public class AppConfig {
	
	@Bean
	public OrderService orderService() {
		return new OrderServiceImpl(discountPolicy());
}
	@Bean
	public FixDiscountPolicy discouintPolicy() {
			return new FixDiscountPolicy
	}
}
  • 제어의 역행 지원
    • 함수나 객체의 호출 제어권이 사용자가 아닌 스프링 프레임워크에서 제어가능
  • 의존성 주입 지원
    • 각각의 계층이나 서비스 간에 의존성이 존재할 경우 프레임워크가 서로 연결
  • 관점지향 프로그래밍(AOP) 지원
    • 스프링 빈에만 적용 가능한 AOP를 사용할때 연동되고 엔터프라이즈 애플리케이션에서 가장 흔한 문제 (중복코드, 프록시 클래스 작성의 번거러움, 객체들 간 관계 복잡도 증가, 이벤트 처리) 에 대한 해결책을 지원
    • 트랜젝션, 로깅, 보안 등 여러 모듈에서 공통적으로 사용되는 기능을 분리하여 관리 가능
  • 환경설정의 복잡성 최소화
    • 스프링 구현에 필요한 다양한 라이브러리를 패키징하여 쉽게 의존성 추가 및 제거 가능
    • starter 명령어를 통해 패키징
    • starter는 의존성과 설정을 자동화해주는 모듈
    • 주요 설정은 application.properties 파일에 적용
  • Maven과 Gradle 지원
    • Gradle은 메이븐의 xml 형태를 보다 설정하기 위해 프로그래밍 코드와 유사하게 환경설정할 수 있도록 구현된 빌드 툴

댓글