- 스프링은 자바 플랫폼을 위한 오픈소스 애플리케이션
* 크기와 부하 측면에서 경량화
* 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 |