정의 : Frame을 가지고 하는 작업(work), 또는 구조물의 뼈대나 틀
소프트웨어에서의 정의 : 비즈니스 로직이 빠진 뼈대만 갖춰진 반제품 형태의 애플리케이션
Java 애플리케이션 개발을 위한 경량 Framework입니다.
프레임워크는 비즈니스 로직과 무관한, 귀찮고 어렵고 모듈화할 수 있는 작업들을 대신 처리해줍니다.
개발자는 프레임워크에 맞춰 비즈니스 로직 작성에 집중할 수 있습니다.
Spring Boot는 또 다른 Spring이 아닌, Spring 애플리케이션을 빠르게 개발하기 위한 템플릿입니다.
Connection → Bean으로 자연스럽게 이어지도록 해줍니다.
🫢 "Boot 바보가 되지 말자!"

new를 이용한 객체 생성 방식은 의존성 직접 구매 방식입니다.
하지만 DI는 외부에서 의존성을 주입받아 사용하는 방식으로, 객체 간 결합도를 낮춰 유지보수를 용이하게 합니다.
의존성이 바뀌더라도 주입받는 객체는 변경될 필요가 없습니다.
비즈니스 로직에서 종단 관심사(로깅, 보안, 트랜잭션 등)를 모듈화하고, 필요한 곳에만 적용할 수 있습니다.
핵심 비즈니스 로직에 집중할 수 있도록 도와줍니다.
❓ Casher와 우렁각시의 차이점은 무엇일까요?
복잡한 기술을 특정 환경에 종속되지 않도록 추상화해 쉽게 사용할 수 있게 해줍니다.
JPA를 쓰든, MyBatis를 쓰든 트랜잭션 처리 방식은 동일합니다.
JPA에서 MyBatis로 교체했을 때, 트랜잭션 로직은 그대로 동작했습니다. PSA 덕분이죠.
POJO는 프레임워크나 라이브러리에 종속되지 않는 일반 자바 클래스입니다.
인터페이스 구현이나 상속 없이도 작동합니다.
DI, AOP, PSA를 적용하기 위해선 특별한 조건 없이 평범한 자바 객체만 만들면 됩니다.
SLF4J는 자바 로깅을 위한 Facade 패턴 기반 인터페이스입니다.
복잡한 로깅 구현체 구조를 단순화해서 사용할 수 있도록 해줍니다.
SLF4J의 구현체: Log4j, Logback 등
다양한 Appender 제공:
@Test : 테스트 메서드 지정@BeforeEach, @AfterEach : 각 테스트 전후 공통 작업 처리@BeforeAll, @AfterAll : 모든 테스트 전에 한 번만 실행되는 작업 (static)@DisplayName : 테스트 목적을 설명하는 문자열org.junit.jupiter.api.Assertions의 다양한 단정 메서드 사용비교 예:
📌 단정문은 테스트의 핵심입니다. 단정 실패 시 테스트는 즉시 종료됩니다.
BDD(Behavior Driven Development)에서 권장되는 테스트 흐름:
@SpringBootTest는 편리하지만 무겁기 때문에 @DataJpaTest 등의 슬라이스 테스트를 권장합니다.



정처기 공부와 1알고리즘 풀고 취침