Skip to content

Commit

Permalink
기본이 중요하다
Browse files Browse the repository at this point in the history
  • Loading branch information
K-Diger committed Dec 31, 2023
1 parent c9d2e93 commit 9ad73ce
Show file tree
Hide file tree
Showing 2 changed files with 131 additions and 0 deletions.
File renamed without changes.
131 changes: 131 additions & 0 deletions _posts/2024-1-1-Spring.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
---

title: Fundermental Spring
date: 2024-01-01
categories: [Spring]
tags: [Spring]
layout: post
toc: true
math: true
mermaid: true

---

# 스프링 프레임워크란?

# 프레임워크와 라이브러리와 차이는?

# 스프링의 특징

- 경량 컨테이너
- POJO(Plain Old Java Object)
- 제어 역행(IoC, Inversion of Control)
- 코드의 유연성, 테스트 용이성, 모듈화, 재사용성, 확장성, 가독성, 유지보수성 등 여러 가지 장점
- 의존성 주입(DI, Dependency Injection)
- 생성자 주입
- 한 번 주입되면 변경할 수 없다. 값이 누락된 경우 컴파일 오류가 발생해서 IDE로 어디서 문제가 발생했는지 확인할 수 있는 장점이 있다.
- 순환참조 방지, final, 테스트 코드 작성 용이
- 수정자 주입
- public 으로 열려 있어서 잘못 변경되면서 에러가 발생할 수 있다.
- 변경이 필요하면 쓴다
- 필드 주입
- 트랜잭션 관리
- AOP 지원
- 스프링은 관점 지향 프로그래밍(Aspect-Oriented Programming, AOP)을 지원하고, 공통 관심 사항(예: 로깅, 보안)을 분리하여 모듈화(횡단 관심사 분리)
- 테스트 지원

---

# Spring 최신버전 주요 Features
- Spring 5
- Java 8 기본 설정
- @Nullable, @NotNull 추가로 컴파일 타임에 유효성 검사 가능
- classpath 기반 component scan 가능
- Webflux Stack 추가

---

# Spring vs Spring Boot

- Embbeded Tomcat 여부, jar 로 배포 가능
- @AutoConfiguration
- 일반적으로 수많은 Bean들을 자동으로 등록해주는 기능
- 애플리케이션의 설정과 빈 등록을 자동화하여 개발자가 최소한의 설정을 제공하면서도 애플리케이션을 빠르게 구축할 수 있게 해주는 역할

---

# Bean이란?

---

# Bean의 생명 주기

---

# filter와 intercepter 차이

---

# Dispatcher-Servlet 이란

---

# 스프링 어노테이션 이란?

스프링 어노테이션은 Java 어노테이션의 확장으로, 스프링 애플리케이션을 구성하고 제어하기 위한 메타데이터를 제공하며, XML 설정 파일을 대체하거나 보완
- @ComponentScan: 스프링이 컴포넌트 스캔을 수행하도록 지정하는 어노테이션으로, 지정된 패키지나 클래스를 대상으로 스캔을 수행하고 @Component 및 관련 어노테이션을 찾아 빈으로 등록합니다.


# AOP란?

객체 지향 프로그래밍 패러다임을 보완하는 기술로 메소드나 객체의 기능을 핵심 관심사(Core Concern)와 공통 관심사(Cross-cutting Concern)로 나누어 프로그래밍하는 것

## 프록시 패턴

- JDK Proxy : Java 내부에 구현되어있는 Proxy

- CGLLIB Proxy : Open source로 구현되어있는 Proxy
- 내부 호출시 프록시가 적용되지 않는 이슈
- 자기자신 주입
- 지연 조회
- ObjectProvider 를 사용하여 조회한다.
- ApplicationContext 를 통해 조회한다.
- 구조 개선

---

# Maven/Gradle

- 빌드 관리 도구
- 종속성 다운로드 - 전처리(Preprocessing)
- 소스코드를 바이너리 코드로 컴파일(Compile)
- 바이너리 코드를 패키징(Packaging)
- 테스트 실행(Testing)
- 프로덕션 시스템에 배포(distribution)

- maven
- xml사용
- 라이프 사이클에 의해 동작
- clean -> validate -> compile -> test ...

- gradle
- apache ant + Groovy
- 가독성이 좋다
- 재사용에 용이
- 구조적인 장점
- 편리함
- 멀티 프로젝트 지원
- gradle 궁극적인 사용 이유
- Maven은 멀티 프로젝트에서 특정 설정을 다른 모듈에서 사용하려면 상속 받아야하지만, gradle은 설정 주입 방식을 사용하므로 멀티 프로젝트에 적합하다.
- 캐시적용으로 인해 빌드 속도 향상

---

# JPA

- JPA를 왜 쓰는지

- JPA를 사용할 때의 주의할 점 및 장/단점

- 영속성 컨텍스트

0 comments on commit 9ad73ce

Please sign in to comment.