Spring (JAVA framework)

1 minute read

20.11.09 시작

Spring

  • 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크

스프링 삼각형

  • POJO(Plain Old Java Object) 를 기반으로 하는 IOC/DI, AOP, PSA 의 3대 프로그래밍 모델

IOC/DI

  • Inversion Of Control / Dependency Injection, 제어의 역전/ 의존성 주입

Bean

  • Spring IoC Container가 관리하는 자바 객체를 빈(bean) 이라고 한다.
import org.springframework.context.ApplicationContext;
// ApplicationContext 에서 getBean 메서드를 이용해 받아올 수 있는 객체를 빈이라고 한다.
// new 로 생성하는 경우 빈이 아니다

---------------------------------------

import org.springframework.beans.factory.annotation.Autowired;

// type (인터페이스) 기준 매칭 - 여러개의 클래스가 존재하는 경우 빈 태그의 id로 구분
// 유니크하게 식별이 불가능할 경우 에러
@Autowired  
Tire tire; //스프링 프레임워크가 설정 파일을 통해 대신 주입해준다.

--------------------------------------

import javax.annotation.Resuorce;

// 자바 표준 어노테이션
// id 기준 매칭 - id에 맞는 빈이 없는 경우 type으로 찾는다.
@Resource
Tire tire;

AOP (Aspect Oriented Programming)

  • 로직(code)에 대한 주입 - 메서드에만 적용 가능
  • cross-cutting concern (횡단 관심사) : 다수의 모듈에 공통으로 나타나는 부분
  • 코드 주입 가능한 부분 : Around, Before, After, AfterReturning, AfterThrowing
  • 인터페이스, 프록시, 런타임 기반

  • PointCut : 삽입 지점을 명시

    형태
    [접근제한자] 리턴타입 [패키지&클래스패턴].메서드이름패턴(파리미터패턴) [throws 예외패턴]

  • JoinPoint : 호출된 객체의 메서드
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;

@Aspect // MyAspect 클래스를 AOP에서 사용하겠다는 의미
public class MyAspect {
    //apo002.Boy.runSomething 실행 전에 해당 메서드를 실행한다.
	@Before("execution(public void aop002.Boy.runSomething ())") // excution 내부가 PointCut
	public void before(JoinPoint joinPoint) {
		System.out.println("...");
	}
}

PSA (Portable Service Abstraction)

  • 일관성 있는 서비스 추상화
  • ORM, … 등등 일관된 방식으로 코드를 작성할 수 있게 해준다

Spring MVC

  • 흐름
    1. 클라이언트에서 URL 입력
    2. 서블릿 컨테이너가 해당하는 웹 컨텍스트를 찾아준다 (URl 분석)
    3. 해당 웹 컨텍스트가 스프링 ApplicationContext에 @RequestMapping 핸들링된 메서드에 처리를 위임한다

VO (Value Object) vs DTO (Data Transfer Object)

  • 동일한 값의 두 객체를 생성했을 때, VO는 같다고 판단 (객체의 값에의존)하고, DTO는 다르다고 판단 (객체 자체에 의존)한다

JPA (Java Persistence API)

  • 관계형 데이터베이를 사용하는 방식을 정의한 인터페이스

Hibernate

  • JPA 인터페이스를 실제로 구현한 ORM (객체 관계 매핑 프레임워크)

출처
스프링 입문을 위한 자바 객체지향의 원리와 이해

Categories:

Updated: