Spring 8

📌 Spring 파일 업로드 구현 (web.xml + DispatcherServlet + MultipartResolver)

📅 2025년 4월 21일 오늘은 Spring MVC 기반 웹 애플리케이션에서 파일 업로드 기능을 구현해보았습니다. JSP와 Servlet 기반 프로젝트에서 실제 파일을 업로드하고 업로드 결과를 확인하는 흐름까지 직접 구성하면서 많은 학습이 되었습니다.1. DispatcherServlet 등록 (web.xml)가장 먼저 web.xml 파일에서 DispatcherServlet을 등록하고 .do 패턴으로 URL을 매핑합니다. dispatcher org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:config/spring/spring-mvc.xml 1 dispatcher *.do2. sp..

Spring 2025.04.21

📅 2025년 4월 14일 - Spring 프로젝트에서 HttpServletRequest 오류 해결하기

오늘은 Spring MVC 프로젝트를 진행하면서 발생한 치명적인 오류, 바로 HttpServletRequest 클래스를 찾을 수 없다는 문제를 해결한 과정을 정리해보았습니다. Spring과 톰캣의 버전 차이로 인한 문제였고, 이를 해결하기 위해 많은 삽질을 했지만 그만큼 배움도 많았던 하루였습니다.🔧 에러 발생 상황프로젝트를 실행하자마자 아래와 같은 에러 메시지가 출력되었습니다.java.lang.ClassNotFoundException: javax.servlet.http.HttpServletRequest그리고 DispatcherServlet 초기화에 실패하며 컨텍스트 로딩 자체가 안 되는 현상까지 이어졌습니다.🧠 원인 분석Spring 6부터는 javax.servlet가 아닌 jakarta.servle..

Spring 2025.04.14

[2025-04-08] 스프링 AOP를 이용한 예외 로그 기록 자동화 실습

[2025-04-08] 스프링 AOP를 이용한 예외 로그 기록 자동화 실습오늘은 스프링 프레임워크에서 AOP(Aspect-Oriented Programming)를 활용하여 예외 로그를 자동으로 기록하는 기능을 실습해보았다. XML 기반 설정과 Java 기반 설정을 모두 활용했고, 예외가 발생했을 때 자동으로 특정 메서드를 실행시켜 로그 파일을 생성하는 흐름을 구현했다.1. 수정한 파일 및 주요 변경 사항(1) app-anno.xml - XML 설정 오류 수정기존에 잘못된 xsi:schemaLocation 주소 때문에 오류가 발생했었다. 이를 http://와 https://를 정확히 구분하여 수정하였다.2. 전체 코드 구성(1) App.java - 반복 실행 및 예외 발생 테스트package com.exa..

Spring 2025.04.08

🧠 Java Config 기반 AOP 예외처리 웹 애플리케이션 만들기 (2025.04.07)

오늘은 Java Config 방식으로 AOP(Aspect-Oriented Programming)를 활용해 예외 처리를 구현하는 웹 애플리케이션을 직접 만들어보았습니다. 기존의 XML 설정 방식과 Annotation 기반 방식과 비교하며, Java 코드만으로 설정을 처리할 수 있는 장점도 함께 느껴볼 수 있었어요.1️⃣ 프로젝트 구조java-config-version/├── src/│ └── main/│ ├── java/│ │ └── com/example/javaconfig/│ │ ├── App.java│ │ ├── AppConfig.java│ │ ├── Calculator.java│ │ ├─..

Spring 2025.04.07

📅 2025년 3월 31일 - Spring AOP(XML 설정)으로 출근/퇴근 자동화하기!

오늘은 Spring AOP를 이용해서 "직원들의 출근과 퇴근"을 공통 로직으로 따로 분리해 자동으로 실행되도록 설정해 보았다. 특히 XML 기반 AOP 설정 방식을 사용해보고, 각각의 클래스를 빈으로 등록하고 실행되는 전체 흐름을 정리해보았다.✨ 오늘 배운 핵심 내용AOP 개념 이해: 핵심 업무와 공통 업무 분리XML 기반 설정으로 AOP 구현인터페이스와 프록시 구조의 관계Spring Container를 통한 빈 관리📂 프로젝트 구성 및 파일 설명1. Employee.java - 인터페이스 정의package aop.xml;// 모든 직원이 구현해야 하는 공통 인터페이스public interface Employee { void work(); // 일을 한다는 공통 메소드}2. Programmer.j..

Spring 2025.03.31

🌱 스프링 의존성 주입(DI) 3가지 방식 완전 정리 (2025.03.24)

오늘은 스프링 프레임워크에서 정말 중요한 개념인 의존성 주입(Dependency Injection, DI) 에 대해 배웠습니다.수업 시간에 직접 코딩도 해보고, 화이트보드에 설계도 해보면서 전체 흐름을 잡는 데 큰 도움이 되었어요.이번 글에서는 제가 오늘 배운 내용을 복습 겸 정리해보고, 부족했던 점과 앞으로 개선해야 할 부분도 함께 기록해보려 합니다.✅ 의존성 주입이란?의존성 주입이란 클래스 내부에서 직접 객체를 생성하지 않고,필요한 객체를 외부에서 주입(넣어주는) 방식입니다.// 일반 방식Calculator calc = new Calculator();// 스프링 DI 방식@AutowiredCalculator calc;스프링에서는 이걸 자동으로 관리해주기 때문에 객체 관리가 훨씬 편하고 유지보수도 쉬워..

Spring 2025.03.24

📘 2025년 3월 16일 교차 검증과 그리드 서치(Grid Search)로 최적의 모델 찾기

안녕하세요! 오늘은 머신러닝 모델의 성능을 높이기 위해 꼭 알아야 하는 **교차 검증(cross-validation)**과 **하이퍼파라미터 튜닝(그리드 서치, 랜덤 서치)**에 대해 공부했어요. 그 과정과 코드를 이해하기 쉽게 블로그로 정리해볼게요.🍷 데이터 준비하기import pandas as pdwine = pd.read_csv('https://bit.ly/wine_csv_data')# 데이터와 타깃 분리data = wine[['alcohol', 'sugar', 'pH']].to_numpy()target = wine['class'].to_numpy()📊 훈련/검증/테스트 세트 나누기from sklearn.model_selection import train_test_splittrain_input,..

Spring 2025.03.16

📚 2025년 3월 16일 스프링 MVC와 MyBatis로 웹사이트 구축하기

안녕하세요! 오늘은 제가 스프링 MVC와 MyBatis를 이용해 간단한 웹사이트를 만들어봤어요. 환경 설정부터 실제 코드 작성까지 공부하면서 느꼈던 중요한 포인트들을 일기처럼 정리해 볼게요.🔧 오늘 공부한 주요 환경 설정JDK 21 설치: 스프링을 돌리기 위해 먼저 자바를 설치했어요.이클립스 EE 설치: 이클립스로 개발 환경을 갖췄어요.Maven 설치 및 환경변수 설정: Maven으로 쉽게 라이브러리를 관리하도록 했어요.Oracle DB 연결: MyBatis를 사용해 데이터베이스와 연결했어요.🌱 주요 파일과 코드 설명① HomeController.java (화면과 URL 연결)@Controllerpublic class HomeController { // 홈페이지 메인화면 @RequestMa..

Spring 2025.03.16