Spring
- Spring에는 상당히 많은 프로젝트들이 존재한다.
- 단일 아키텍처 Monolithic에서 SpringCloud 활용 MSA 로 변환
- 많이 사용되는 것들로는
- 스프링부트
- 스프링 클라우드
- 스프링 데이터
- 스프링 배치
- 스프링 시큐리티
- 스프링부트
- Spring의 과제는 "테스트의 용이성", "느슨한 결합"에 중점을 두고 개발
- IoC의 등장 (Inversion of Control, 제어의 역행)
- 스프링과 다른 프레임워크와 가장 큰 차이점이 IoC를 통한 개발 진행
- AOP
- AOP를 사용하여 로깅, 트랜잭션 관리, 시큐리티에서의 적용 등 AspectJ와 같이 완벽하게 구현된 AOP와 통 합하여 사용 가능하다.
IoC (Inversion of Control)
- "제어의 역전"
- Java객체를 new로 생성하여 개발자가 관리하는 것이 아닌 Spring Container에 모두 맡긴다.
- 권한이 프레임워크로 넘어갔다 해서 제어의 역전이라고 한다. 스프링의 큰 특징이다.
- 즉, 개발자에서 -> FrameWork로 객체 관리의 책임이 넘어갔기 때문이다.
- @Bean 과 @Component 라는 개념일 알아야한다.DI (Dependency Injection)
- 의존성으로부터 격리시켜 코드 테스트에 용이하다.
- DI를 통하여, 불가능한 상황을 Mock와 같은 기술을 통하여 안정적으로 테스트가 가능하다.
- 코드를 확장하거나 변경 할 때 영향을 최소화 한다. (추상화)
- 순환참조를 막을 수 있다.
AOP
- 관점지향 프로그램
- 스프링 어플리케이션은 대부분 특별한 경우를 제외하고는 MVC 웹 어플리케이션에서는
- web layer : RestAPI를 제공하며 Client 중심의 로직 적용
- business layer : 내부 정책에 따른 Logic을 개발하며, 주로 해당 부분을 개발
- data layer : 데이터 베이스 및 외부와의 연동을 처리
로 정의
- 주요 Annotation
- @Aspect : 자바에서 널리 사용하는 AOP프레임워크에 포함되며, AOP를 정의하는 Class에 할당
- @Pointcut : 기능을 어디에 적용시킬지, 메소드? Annotation? 등 AOP를 적용시킬 지점을 설정
- @Before : 메소드 실행하기 이전
- @After : 메소드가 성공적으로 실행 후, 예외가 발생 되더라도 실행
- @AfterReturning : 메소드 호출 성공 실행시 (Not Throws)
- @AfterThrowing : 메소드 호출 실패 예외 발생 (Throws)
- @Around : Before / after 모두 제어
Spring Boot Annotations
요즘은 클라이언트가 따로 서버로 분리되어 백엔드(서버)쪽은 RestAPI로 데이터를 주고받는 스프링부트가 많이 사용된다.
아래는 스프링부트에서 많이 사용되는 어노테이션 목록으로 알아두면 좋다.
가장 기본적인 어노테이션
@SpringBootApplication : Spring boot application으로 설정
@Controller : View를 제공하는(템플릿) controller로 설정
@RestController : REST API 를 제공하는 controller로 설정
@RequestMapping : URL 주소를 매핑
@GetMapping : Http Get메소드 주소 매핑
@PostMapping : Http Post메소드 주소 매핑
@PutMapping : Http Put메소드 주소 매핑
@DeleteMapping : Http Delete메소드 주소 매핑
@RequestParam : URL Query 파라미터 매핑
@RequestBody : Http Body를 Parsing 맵핑
@Valid : POJO Java Class의 검증
bean와 객체를 다루거나 DI관련 어노테이션
@Configuration : 1개 이상의 bean을 등록 할 때 설정
@Component : 1개의 Class 단위로 등록 할 때 사용
@Bean : 1개의 외부 library로 생성한 객체를 등록 시 사용
@Autowired : DI를 위한 곳에 사용
@Qualifier : @Autowired 사용시 bean이 2개 이상일때 명시적 사용
@Resource : @Autowired + @Qualifier 의 개념으로 이해
AOP
@Aspect : AOP 적용시 사용
@Before : AOP 메소드 이전 호출 지정
@After : AOP 메소드 호출 이후 지정 예외 발생 포함
@Around : AOP 이전/이후 모두 포함 예외 발생 포함
@AfterReturning : AOP 메소드의 호출이 정상일 때 실행
@AfterThrowing : AOP시 해당 메소드가 예외 발생시 지정
'Spring' 카테고리의 다른 글
How to handle Spring WebClient Exception. 스프링 에러 핸들링. Pt. 1 (0) | 2021.09.16 |
---|---|
Spring Validation에 대하여 알아보자 (0) | 2021.09.13 |
@RunWith(SpringRunner.class) 와 @ExtendWith(SpringExtension.class) 의 주의할 점 & 설명 (0) | 2021.09.02 |