Spring Core
-
Spring Framework 시리즈 10화 – 실무 예제: 간단한 DI 기반 계산기 시스템 구현기술과 산업/언어 및 프레임워크 2025. 5. 29. 16:30
스프링 핵심 개념인 @Component, @Autowired, @Value, @EventListener 등을 실제 프로젝트에 통합하여 DI 기반 계산기 시스템을 구현해봅니다. 학습한 이론을 코드로 연결하고 구조적으로 정리합니다.프로젝트 개요우리는 간단한 계산기 시스템을 만들 겁니다.사용자가 두 수와 연산자(+, -, *, /)를 입력하면, 계산을 수행하고 결과를 출력하며, 이벤트 리스너를 통해 로그 또는 통계 처리를 따로 분리합니다.📁 프로젝트 구조src/ └── main/ ├── java/ │ └── com.example.calculator/ │ ├── AppConfig.java │ ├── Calculator.java │ ├..
-
Spring Framework 시리즈 9화 – ApplicationContext의 역할과 이벤트 처리 구조기술과 산업/언어 및 프레임워크 2025. 5. 28. 15:20
Spring의 ApplicationContext는 단순한 Bean 팩토리가 아닙니다. 이 글에서는 ApplicationContext가 제공하는 기능과, 이를 기반으로 구현되는 Spring 이벤트 시스템의 구조와 활용법을 실제 코드 예제 중심으로 설명합니다.ApplicationContext는 BeanFactory의 확장판이다초기에는 모든 DI 컨테이너가 BeanFactory였습니다. 하지만 현재 실무에서는 거의 모든 Spring 기반 프로젝트가 ApplicationContext를 사용합니다.ApplicationContext는 BeanFactory의 모든 기능을 포함하면서, 다음과 같은 부가 기능을 제공합니다:기능 설명메시지 국제화 처리MessageSource이벤트 퍼블리싱ApplicationEventPub..
-
Spring Framework 시리즈 7화 – @Value와 Environment로 설정값 주입하기기술과 산업/언어 및 프레임워크 2025. 5. 27. 19:07
Spring Framework에서 @Value 애노테이션과 Environment 객체를 사용해 외부 설정값을 주입하는 방법을 정리합니다. 프로퍼티 파일을 기반으로 한 환경 구성, 기본값 처리, 환경 분기 방법까지 실습 예제로 소개합니다.왜 외부 설정이 필요한가?코드에 설정값을 하드코딩하면 다음과 같은 문제가 발생합니다.운영 환경마다 값이 달라 배포가 복잡해짐비밀번호나 토큰이 노출되어 보안 취약리팩토링/재사용이 어렵고 유지보수가 힘듦스프링은 설정값을 외부에서 관리할 수 있도록 application.properties나 application.yml 파일을 통해 구성하고, 이를 주입할 수 있는 다양한 방법을 제공합니다.1. @Value 애노테이션 – 간단한 주입@Componentpublic class AppI..
-
Spring Framework 시리즈 6화 – 의존성 순환 오류 해결 전략기술과 산업/언어 및 프레임워크 2025. 5. 27. 19:05
스프링에서 발생할 수 있는 대표적인 구조적 문제, 의존성 순환 오류(Dependency Circular Reference)의 원인과 해결 방법을 예제 중심으로 정리합니다. @Lazy, 세터 주입, 구조 분리 등 실전 대응 전략도 함께 제공합니다.순환 의존성이란 무엇인가?의존성 주입이란 객체 간의 관계를 외부에서 설정해주는 것을 말합니다. 그런데 두 객체가 서로를 참조하면, 객체 생성 시점에서 무한 루프와 같은 문제가 발생하게 됩니다.예를 들어 A → B, B → A가 동시에 일어날 경우, 스프링은 어느 쪽을 먼저 만들어야 할지 결정할 수 없습니다.예제 – 순환 의존성 발생@Componentpublic class A { private final B b; public A(B b) { ..
-
Spring Framework 시리즈 4화 – Bean의 생명주기 이해와 커스터마이징기술과 산업/언어 및 프레임워크 2025. 5. 21. 12:05
Spring Bean의 생성부터 소멸까지의 생명주기와 이를 제어하는 방법인 InitializingBean, DisposableBean, @PostConstruct, @PreDestroy 등의 애노테이션 기반 설정 방식을 실제 코드로 정리합니다.왜 빈 생명주기를 이해해야 하는가?많은 개발자가 @Component나 @Bean으로 객체를 등록하고 DI로 연결하는 데 익숙하지만, 객체가 언제 생성되고 언제 소멸되는지에 대해서는 깊이 생각하지 않습니다. 하지만 실무에서는 다음과 같은 작업이 꼭 필요합니다.데이터베이스 연결 초기화파일 핸들러나 네트워크 소켓 열기리소스 정리 및 로그 남기기커넥션 풀 종료 처리이 모든 과정이 Bean의 생명주기(Lifecycle)와 맞물려 있습니다.Spring Bean 생명주기 – 전..
-
Spring Framework 시리즈 3화 – @Configuration vs XML – 빈 설정 방식 비교기술과 산업/언어 및 프레임워크 2025. 5. 20. 12:51
Spring Framework에서 빈(Bean)을 설정하는 두 가지 방법, XML 설정과 @Configuration(Java Config)의 차이와 실전 적용 사례를 비교합니다. 어떤 방식이 2025년 현재 기준으로 더 적합한지도 함께 살펴봅니다.스프링 빈 설정 방식의 진화Spring은 초기에는 XML 기반 설정을 중심으로 발전해 왔습니다. 그러나 이후 Java 애노테이션 기반 설정(@Configuration, @Bean 등)이 도입되면서 구조의 단순화와 유지보수성 측면에서 큰 변화가 있었습니다.구분 XML 기반 설정 Java Config 기반 설정선언 위치.xml 파일자바 클래스설정 방법 태그@Configuration, @Bean가독성구조화됨코드로 직관적 표현 가능리팩토링IDE 지원 제한리팩토링 편리현..
-
Spring Framework 시리즈 2화 – @Component와 @Autowired로 의존성 주입 구현하기기술과 산업/언어 및 프레임워크 2025. 5. 20. 12:49
Spring의 의존성 주입(DI)을 구성하는 기본 애노테이션인 @Component와 @Autowired의 사용법과 주의사항을 실제 코드 예제와 함께 알아봅니다.의존성 주입(DI)은 왜 중요한가?Spring에서 **DI(Dependency Injection)**는 객체 간 의존 관계를 외부에서 주입받는 방식으로 구성해 유연성과 테스트 용이성을 확보합니다.직접 new로 객체를 생성하는 방식은 강한 결합을 유발하며, 테스트 시 Mock 객체를 주입하기도 어렵습니다.Spring은 이를 해결하기 위해 주요 애노테이션들을 제공합니다:@Component: 스프링이 관리할 객체(빈)를 선언@Autowired: 스프링 컨테이너에 등록된 빈을 자동으로 주입실습 예제 – 자동차와 엔진1. 의존 관계 정의// Engine.j..
-
Spring Framework 시리즈 1화 – Spring Framework 시작하기기술과 산업/언어 및 프레임워크 2025. 5. 19. 16:26
Spring Framework는 자바 기반 애플리케이션 개발의 표준입니다. 이 글에서는 Spring이 등장하게 된 배경과 핵심 개념인 IoC, DI의 원리를 실전 예제 중심으로 소개합니다. 왜 Spring Framework인가?자바로 웹 애플리케이션을 개발해본 적이 있는 개발자라면 JSP, Servlet 기반 개발이 얼마나 번거롭고, 중복 코드가 많으며, 확장성과 유지보수가 어려운지를 한 번쯤 경험해봤을 것입니다.Spring은 이러한 문제를 해결하기 위해 등장했습니다. 핵심 철학은 단순합니다.“객체 간의 의존 관계를 자동으로 연결해주고, 개발자는 비즈니스 로직 구현에 집중하게 하자.”이 철학을 코드로 구현한 것이 바로 **IoC (제어의 역전)**와 **DI (의존성 주입)**입니다. 이 두 가지가 Sp..