[spring] part3. 스프링입문 - 05 Spring을 조금 더 들여다 보기

문상훈·2022년 1월 17일
0

Spring

목록 보기
3/4
post-thumbnail

05 Spring을 조금 더 들여다 보기

스프링의 핵심

Spring

  • Spring의 구성은 20여가지로 구성 http://spring.io/projects/spring/framework 이러한 모듈은 스프링의 핵심기능 (DI, AOP ... )을 제공해 주며, 필요한 모듈만 선택하여 사용 가능하다
  • 현재 단일 아키텍처(모놀리스) 마이크로서비스 아키텍처로 변환 중. 여기에 맞춰서 스프링도 진화하고 있는 상태
  • 여러가지 모듈이 있지만 스프링 부트, 스프링 클라욷, 스프링 데이터, 스프링 배치, 스프링 시큐리티에 중점을 둔다.
  • 테스트의 용이성, 느슨한 결합에 중점을 두고 개발한다.
  • IoC의 등장 - 스프링과 다른 프레임워크의 가장 큰 차이점
  • AOP - 로깅, 트랙잭션 관리, 시큐리ㅣ에서의 적용 등 AspectJ와 같이 완벽하게 구현된 AOP와 통합하여 사용가능하다.

Iox / DI

IoC (Inversion of Control)

스프링에서는 일반적인 Java 객체를 new로 생성하여 개발자가 관리 하는 것이 아닌 Sprin Container에 모두 맡긴다.

제어의 역전 - 제어의 객체 관리의 권한이 개발자에서 프레임워크로 넘어감

DI (Dependency Injection)

  • 의존성으로부터 격리시켜 코드 테스트에 용이하다.
  • DI를 통해, 불가능한 상황을 Mock와 같은 기술을 ㅗㅇ하여, 안정적으로 테스트 가능하다.
  • 추상화 - 코드를 확장하거나 변경 할 때 영향을 최소화 한다.
  • 순환참조를 막을 수 있다.

AOP

AOP (Aspect Oriented Programming)

  • 관점 지향 프로그램
  • 스프링 어플리케이션은 대부분 특별한 경우를 제오하고는 MVC 웹 어플리케이션에서는 Web Layer, Business Layer, Data Layer로 정의한다.
  • Web Layer : REST API를 제공하며, Client 중심의 로직 적용
  • Business Layer : 내부 정책에 따른 logic를 개발하며, 주로 해당 부분을 개발
  • Data Layer : 데이터 베이스 및 외부와의 연동을 처리

주요 Annotation

Annotation의미
@Aspect자바에서 널리 사용하는 AOP 프레임워크에 포함되며, AOP를 정의하는 Class에 할당
@Pointcut기능을 어디에 적용시킬지, 메소드, Annotation 등 AOP를 적용 시킬 지점을 설정
@Before메소드 실행하기 이전
@After메소드가 성공적으로 실행 후, 예외가 발생 되더라도 실행
@AfterReturning메소드 호출 성공 실행 시 (Not Throws)
@AfterThrowing메소드 호출 실패 예외 발생 (Throws)
@AroundBefore/after 모두 제어

횡단 관심

여러가지 Annotation

Spring Boot Annotations

Annotation의미
@SpringBootApplicationSpring boot application 으로 설정
@ControllerView를 제공하는 controller로 설정
@RestControllerREST API를 controller로 설정
@RequestMappingURL 주소를 맵핑
@GetMappingHttp GetMethod URL 주소 맵핑
@PostMappingHttp PostMethod URL 주소 맵핑
@PutMappingHttp PutMethod URL 주소 맵핑
@DeleteMappingHttp DeleteMethod URL 주소 맵핑
@RequestMappingURL Query Parameter 맵핑
@RequestBodyHttp Body를 Parsing 맵핑
@ValidPOJO Java class의 검증

Spring Boot Annotations

Annotation의미
@Configration1개 이상의 been을 등록 할 때 설정
@Component1개의 Class 단위로 등록 할 때 사용
@Bean1개의 외부 library로부터 생성한 객체를 등록 시 사용
@AutowiredDI를 위한 곳에 사용
@Qualifier@Autowired 사용시 bean이 2개 이상 일 때 명시적 사용
@Resource@Autowired + @Qualifier 의 개념으로 이해
@AspectAOP 적용시 사용
@BeforeAOP 메소드 이전 호출 지정
@AfterAOP 메소드 호출 이후 지정 예외 발생 포함
@AroundAOP 이전/이후 모두 포함 예외 발생 포함
@AfterReturningAOP 메소드의 호출이 정상일 때 실행
@AfterThrowingAOP시 해당 메소드가 예외 발생시 지정
profile
내가 왜 개발잔거지

0개의 댓글