Spring

Spring 프레임워크

안녕로봇 2017. 3. 27. 19:46

스프링 프레임워크

- 기업용 애플리케이션을 만들기 위한 다양한 기능을 제공하는 프레임워크

- cf.) 프레임워크 - 뼈대, 틀, 골자: 어떤 문제영역을 해결하기 위한 잘 설계된 일반적인, 재사용 가능한 모듈

- 애플리케이션의 전 영역을 포괄하는 범용적인 프레임워크 


- 경량 컨테이너: 자바 객체의 생성, 소멸과 같은 라이플 사이클 관리, 필요한 객체를 가져와 사용

- DI(Dependency Injection) 지원 - 느슨한 결합도

- AOP(Aspect Oriented Programming)를 지원: 트랜잭션, 로깅, 보안등 공통으로 필요로하는 부수적인 기능들 지원

- POJO (평이한 자바 객체) 지원 - 비 침투적인 개발(불필요한 코드 제거)

- MVC 프레임워크 제공



종속 객체 주입(DI : Dependency Injection)

- 객체 간의 의존 관례를 객체 자신이 아닌 외부의 조립기가 수행

- 생성자 또는 setter로 주입함

- 의존하는 클래스가 변경되는 경우 코드를 변경해야 하는 문제가 줄어듬

- DI패턴이라고도 함. 비슷한 의미로 IOC( Inversion of Control )



<bean> 엘리먼트

- 스프링에서 가장 기본적인 설정단위로, 스프링에게 객체를 만들어 달라는 의미

- ex) applicationContext.xml 파일에서... 

<bean name="articleDao" class="mysite.spring.di.MySQLArticleDao" />


와이어링(wiring)

- 애플리케이션 컴포넌트간의 관계를 정하는것

- 스프링에서 일반적으로 XML을 이용

- cf.) applicationContext.xml : 객체의 생성과 와이어링을 책임짐.


애스펙트 적용(AOP : Aspect-Oriented Programming)

- 횡단관심사: 로깅, 트랜잭션 관리, 보안관련

- 애플리케이션의 컴포넌트들이 본연의 비즈니스 기능에 집중하도록. 의존 관계의 복잡성과 중복을 해소

- 핵심기능을 구현하는 모듈에는 아무런 변화도 가하지 않고 추가적인 기능을 선언적을 적용할 수 있음

- 설정 파일이나 설정 클래스 등을 이용하여 Aspect를 여러 클래스에 적용할 수 있도록 함


AOP 용어

Advice - 언제 공통 관심 기능을 핵심 로직에 적용할 지 정의

Joinpoint - Advice를 적용 가능한 시점(예. 메서드 호출, 필드값 변경등)

Pointcut - Joinpoint의 부분집합. 실제로 Advice가 적용되는 Joinpoint를 나타냄  <----이거 잘 모르겠음 확인

Weaving - 공통 코드를 핵심 로직코드에 삽입하는 것

Aspect - 여러 객체에 공통으로 적용되는 공통 관심 사항(트랜잭션, 보안등)


Advice 정의 관련 태그

<aop:before> 

 메서드 실행전 적용

<aop:after-returning> 

 메서드가 정상적으로 실행된 후 적용 

<aop:after-throwing>

 메서드가 예외 발생시 적용. try-catch에서 catch블록과 비슷

<aop:after>

 메서드가 정상적 또는 예외 발생 상관없이 적용. finally블록과 비슷

<aop:around>

 메서드 호출 이전, 이후, 예외 발생등 모든 시점에 적용


AspectJ의 Pointcut 표현식

 - 기본 형식 : execution(수식어패턴? 리턴타입패턴 클래스이름패턴? 이름패턴(파라미터패턴) )

 execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-patter) throws-pattern?)

 ex) execution(* *..*Service.*(..))

 ..은 0개 이상, *은 모든 값