본문 바로가기

- Spring

[Spring] 기본개념 및 어노테이션

반응형

- 스프링은 자바 플랫폼을 위한 오픈소스 애플리케이션

    * 크기와 부하 측면에서 경량화

    * IoC 컨테이너로 애플리케이션의 느슨한 결합

    * 의존성 주입을 통해 각 계층이나 서비스들간의 의존성 동기화

    * 자바의 리플렉션을 이용해서 객체의 생명주기를 관리

 

- MVC

    * Model: 핵심적인 비즈니스 로직으로 DB를 관리

    * View: 사용자에게 보여주는 화면

    * Controller: 모델과 뷰 사이에서 정보교환을 할 수 있도록 연결시키는 역할

 

- 스프링에서 AOP

    * 관점 지향 프로그래밍의 약자로 비즈니스 로직의 앞 뒤에서 원하는 지점에 공통 관심사가 수행할 수 있게 하면서

중복 코드를 줄이는 방식(모듈화)

    * Bean에만 등록

 

- 스프링 DI (Dependency Injection)

    * 데이터 주입만 담당하는 별도의 공간에서 객체를 생성하고 코드에서 가져다 쓰면서 의존성 감소

    * 모듈 간의 결합도를 낮춰서 유연한 변경이 가능

    * 디자인 패턴 중 팩토리 패턴을 활용하는 것과 유사

    * 스프링에서는 setter메소드를 통해 DI하는 것을 권장

    * @Autowired

    * @RequiredArgsConstructor

 

- IoC 컨테이너

    * 인스턴스의 생성부터 소멸까지 컨테이너가 대신 관리해주는 것

    * 인스턴스 생성의 제어를 서블릿과 같은 bean이 관리

    * interface

 

- 스프링 어노테이션

@RestController

    * @Controller와 @ResponseBody를 합친 어노테이션으로 메서드의 반환 결과를 JSON 형태로 반환

    * view가 필요 없는 api만 지원하는 서비스에서 사용(Spring 4.0.1부터 제공)

 

@Controller

    * api와 view를 동시에 사용하는 경우에 사용. view return이 주목적

 

@Service

    * service 어노테이션

 

@RequestMapping

    * 요청 url을 어떤 메서드가 처리할지 매핑해주는 어노테이션

 

* CRUD

@GetMapping

@PostMapping

@PutMapping

@DeleteMapping

 

@Bean

    * 객체, Spring Container에 Bean을 등록하도록 하는 어노테이션

    * 개발자가 직접 제어 불가능한 외부 라이브러리 등에 사용

 

@Component

    * 개발자가 직접 작성한 class를 Bean으로 등록하기 위해 사용

 

@Autowired

    * 의존성을 주입해서 자동으로 객체를 생성

    * 메서드의 경우 기본 생성자를 생성

 

@RequiredArgsConstructor

    * 초기화 되지 않은 final 필드에 의존성 주입

 

@Override

    * 오버라이드

 

@Getter

@Setter

 

@EnableTransactionManagement

    * 어노테이션 기반으로 트랜잭션을 활성화

 

@Value

    * properties에 선언한 값을 사용

    * Spring Batch에서는 jobParameter 사용 가능

 

@Transactional

    * 데이터베이스 트랜잭션

 

@Before

    * 타겟 메서드 수행 전

 

@After

    * 타겟 메서드 수행 후

    * 성공, 실패 여부와 무관

 

@Aspect

    * AOP, 모듈화하기 위해 사용

    * 사용 시 @Component로 Bean에 등록해야함

반응형

'- Spring' 카테고리의 다른 글

[JPA] Embeddable, Embedded  (0) 2020.07.16
[JUnit 5] @TestMethodOrder  (0) 2020.06.25
[JUnit 5] Assertion  (0) 2020.06.18
[JUnit 5] 기본  (0) 2020.06.17
[Spring Batch] 기본 개념  (0) 2020.05.24