분류 전체보기(188)
-
Spring JDBC
Spring JDBC는 Spring Framework에서 JDBC(Java Database Connectivity)를 쉽게 사용할 수 있도록 도와주는 추상화된 데이터 액세스 기술입니다. 복잡하고 반복적인 JDBC 코드를 줄이고, 예외 처리, 연결 해제 등을 자동으로 처리해 줍니다. 🔷 1. Spring JDBC란?기존 **JDBC(Java Database Connectivity)**는 다음과 같은 코드가 반복됩니다:DB 연결(Connection) 생성SQL 준비(PreparedStatement)실행 및 결과 처리(ResultSet)예외 처리(try-catch)리소스 해제(close)이런 반복을 줄이기 위해 Spring에서는 JdbcTemplate 클래스를 제공합니다. 🔷 2. 핵심 클래스: Jdbc..
2025.06.13 -
스프링 MVC
1. 스프링 MVC 아키텍처 개요스프링 MVC는 Model-View-Controller 디자인 패턴을 기반으로 한 웹 프레임워크입니다.Model: 비즈니스 로직 처리, 데이터 저장 또는 조회View: 사용자에게 보여질 UI (HTML, Thymeleaf, JSP 등)Controller: 요청을 받아서 처리하고, 어떤 View로 응답할지 결정 2. DispatcherServlet 요청 처리 흐름DispatcherServlet은 스프링 MVC의 프론트 컨트롤러 역할을 합니다. 모든 웹 요청은 DispatcherServlet이 가장 먼저 받습니다.📌 전체 흐름클라이언트 요청: 사용자가 웹 브라우저에서 특정 URL로 요청DispatcherServlet이 요청을 받음HandlerMapping을 통해 어떤 Con..
2025.06.13 -
스프링 컨테이너
1. 스프링 컨테이너란?스프링 컨테이너는 애플리케이션에서 사용할 객체들을 생성하고, 생성된 객체들 간의 의존성을 연결해주는 역할을 합니다.이 객체들은 스프링에서는 보통 Bean(빈) 이라고 부릅니다.개발자는 직접 객체를 생성하고 관리하는 것이 아니라, 스프링 컨테이너에 빈을 등록하고, 스프링이 이를 생성·주입·관리하도록 맡깁니다. 2. 스프링 컨테이너의 역할Bean 생성과 초기화Bean 간 의존성 주입(Dependency Injection, DI) 처리Bean 생명주기 관리 (초기화, 소멸 등)Bean 설정 정보 관리 (XML, Java Config, 어노테이션 등)Bean 범위(scope) 관리 (싱글톤, 프로토타입, request, session 등)3. 스프링 컨테이너의 종류스프링에서는 컨테이너 구..
2025.06.13 -
AOP (관점 지향 프로그래밍)
"공통 관심 사항을 핵심 비즈니스 로직에서 분리"하기 위한 개념핵심 로직(what)과 부가 로직(how)을 분리하여 코드의 관심사(Concern)를 분리함예시로 이해해보자예를 들어, 모든 서비스 로직 전에 로그를 출력하고, 끝나면 실행 시간을 측정하고 싶다고 해보자:public void order() { System.out.println("로그 출력"); // 주문 비즈니스 로직 System.out.println("실행 시간 측정");}이걸 모든 서비스 클래스에 반복하면 코드가 중복되고 복잡해짐.→ 이걸 해결하기 위해 AOP를 사용! 핵심 용어 정리Aspect => 공통 관심사 (예: 로그 출력, 트랜잭션, 보안 등)Advice => 언제, 어떤 작업을 실행할지 정의 (메서드 실행 전/..
2025.06.13 -
스프링 Bean 생명주기와 scope
스프링 빈의 생명주기 단계 요약객체 생성 (new)의존성 주입 (@Autowired 등)초기화 콜백 (초기화 작업 수행)사용소멸 콜백 (정리 작업 수행)예시: 자동차의 생명주기@Componentpublic class Car implements InitializingBean, DisposableBean { public Car() { System.out.println("1️⃣ 생성자 호출: Car 객체 생성됨"); } @Autowired public void setEngine(Engine engine) { System.out.println("2️⃣ 의존성 주입: Engine 주입됨"); } @Override public void afterProp..
2025.06.12 -
DI (의존성 주입, Dependency Injection)
IoC를 구현하는 방법 중 하나.객체가 필요한 의존 객체를 외부에서 "주입"받음.DI를 사용하지 않은 코드:Car가 직접 Engine을 생성하므로,→ Car와 Engine이 강하게 결합됨 (강결합, Tight Coupling)→ 테스트하기 어렵고, 코드 유연성이 떨어짐public class Car { private Engine engine = new Engine(); // 직접 객체 생성 public void drive() { engine.start(); }} DI를 사용하는 코드: Car는 더 이상 Engine을 생성하지 않음대신 필요한 객체(Engine)를 외부에서 주입받음→ 느슨한 결합 (Loose Coupling)→ 유연하고 테스트하기 쉬운 코드가 됨!public c..
2025.06.12