주니어 개발자의 결합도(Coupling) 이해하기: 스프링에서 결합도 관리하기
·
Spring 기초/Spring 기초 지식
결합도(Coupling)는 (클래스, 모듈, 함수 등) 간의 상호 의존성의 정도를 나타낸다. 📖 서론 개발 분야에서 "결합도(Coupling)"는 소프트웨어의 다양한 구성 요소 간의 상호 의존성의 정도를 나타내는 중요한 개념이다. 이는 소프트웨어 구조의 효율성과 유지보수의 용이성을 결정하는 핵심 요소 중 하나로, 소프트웨어 코드 간의 의존 관계의 정도를 나타낸다. 코드 사이에 강한 결합이 있으면, 한 부분이 바뀌었을 때 다른 부분에도 영향을 많이 준다. 그래서 우리는 보통 낮은 결합도를 유지하려고 한다. 낮은 결합도가 좋은 이유는 몇 가지가 있다. 1. 유지보수의 용이성: 낮은 결합도는 한 컴포넌트의 변경이 다른 컴포넌트에 미치는 영향을 줄여, 유지보수를 용이하게 해 준다. 2. 재사용성의 증가: 각 컴..
가볍게 알아보는 디자인 패턴 - 팩토리 메서드 패턴(Factory Method Pattern)
·
Spring 기초/Spring 기초 지식
팩토리 메서드 패턴에 대해서 알아보자 1. 팩토리 메서드 패턴이란? 팩토리 메서드 패턴은 객체 생성을 추상화하고 캡슐화하는 디자인 패턴이다. 스프링에서 이 패턴은 BeanFactory와 ApplicationContext를 통해 구현된다. 객체를 직접 생성하는 대신, 팩토리를 통해 객체를 요청하면, 이 팩토리가 객체 생성의 복잡성을 숨기고 필요한 객체를 제공한다. 1-1. 팩토리 메서드 패턴의 기본 구조 1. 정의 팩토리 메서드 패턴은 객체의 생성 과정을 서브 클래스에 위임하는 디자인 패턴이다. 이를 통해 클라이언트 코드는 구체적인 클래스의 인스턴스화 과정을 알 필요 없이, 객체를 생성할 수 있다. 2. 구현 방식 이 패턴은 팩토리 메서드를 정의하여, 이 메서드가 객체를 생성하고 반환하는 역할을 한다. 클..
가볍게 알아보는 디자인 패턴 - 싱글톤 패턴(Singleton Pattern)
·
Spring 기초/Spring 기초 지식
스프링에 적용된 싱글톤 패턴에 대해서 간단히 알아보자 1. 싱글톤 패턴의 구조 이해하기 1-1. 스프링 컨테이너 이해하기 스프링 컨테이너는 ApplicationContext를 통해 정의된다. 이 컨테이너는 IoC(Inversion of Control) 또는 DI(Dependency Injection) 컨테이너로도 알려져 있다. 주요 역할은 애플리케이션 내의 빈(Bean)들을 인스턴스화, 구성, 관리하는 것이다. 이 과정을 통해 개발자는 객체의 생성과 생명주기에 대해 걱정할 필요 없이 비즈니스 로직에 집중할 수 있다. 1-2. IoC 컨테이너 (스프링 컨테이너)의 중요성 IoC 컨테이너는 객체의 생성과 의존성 주입을 담당한다. 이는 객체 간의 의존성을 느슨하게 만들어, 코드의 재사용성과 테스트 용이성을 향..
Spring Boot 생성자 주입 알아보기1: @ComponentScan 동작원리
·
Spring 기초/Spring 기초 지식
이번 포스트에서는 내가 궁금해서 알아본 생성자 주입이 이루어지는 과정에 대해서 설명할 것이다. 📌 서론 이번 포스트는 총 2편으로 나뉜다. 지금부터 설명할 1편에서는 @ComponentScan이 빈 등록을 어떻게 하는지 알아보고 2편에서는 이 등록된 빈을 활용하여 생성자 주입을 진행하는 것을 상세히 알아본다. 이번 포스트의 내용은 스프링에서 가장 중요하게 사용되는 Bean을 등록하는 과정을 상세하게 설명하도록 하겠다. 1. 생성자 주입과 컴포넌트 스캔 간략하게 알아보기 1-1 생성자 주입 과정 알아보기 1. SpringApplication.run() 스프링 부트 애플리케이션을 시작하는 주요 진입점이다. 이 메서드가 호출되면 내부적으로 여러 설정과 초기화 작업이 진행된다. 2. ApplicationCont..
[Spring] 자바 리플렉션과 생성자 주입의 관계
·
Spring + Java
이번 포스트에서는 Spring 프레임워크가 자바의 리플렉션 기능을 어떻게 활용하여 생성자 주입을 수행하는지에 대해 살펴보자 이번 포스트에서는 특히, 스프링의 AutowiredAnnotationBeanPostProcessor 클래스가 생성자 주입 과정에서 어떤 역할을 하는지 집중적으로 알아볼 것이다. 이 글에서는 리플렉션이 스프링 내부에서 어떻게 사용되는지에 집중하여 설명한다. 이를 통해, 스프링의 내부 동작 방식에 대한 더 깊은 이해를 얻을 수 있을 것이고 자바 리플렉션의 중요성도 알 수 있을 것이라고 생각한다. AutowiredAnnotationBeanPostProcessor 클래스는 아래와 같다. 스프링은 왜 리플렉션을 사용해서 의존성 주입을 할까? 1. 스프링이 리플렉션을 통해 하는 일은 무엇일까..
[Spring] @Component와 @Bean의 차이점
·
Spring 기초/Spring 기초 지식
Spring에서 @Bean과 @Component의 차이와 최적의 활용 방법을 알아보자 아래의 포스트를 통해 @Bean과 @Component의 기본 지식을 보충하고 오시는것을 추천합니다! Spring 빈 등록: @Bean의 기본과 활용 이번 포스트에는 스프링에서 가장 중요한 빈 등록 방식 @Bean에 대해 소개한다. 📌 서론 Spring Framework에서 @Bean은 매우 중요한 개념이다. 이는 개발자가 직접 제어할 수 없는 외부 라이브러리나 복 curiousjinan.tistory.com Spring의 빈 등록: @Component 이번 포스트에서는 @Component를 사용하여 스프링 빈 등록하는 방법을 알아보자 📌 서론 Spring Framework의 @Component 어노테이션은 클래스 인스턴..
[Spring] @Component로 스프링 빈 등록하기
·
Spring 기초/Spring 기초 지식
이번 포스트에서는 @Component를 사용하여 스프링 빈 등록하는 방법을 알아보자 📌 서론 Spring Framework의 @Component 어노테이션은 클래스 인스턴스를 스프링 빈으로 자동 등록한다. 이는 의존성 주입과 빈 생명주기 관리를 효율적으로 만들며, 스프링의 다양한 기능과도 잘 통합된다. @Component의 사용은 애플리케이션 구성을 간소화하고, 유지보수와 테스트가 쉬운 코드를 만드는 데 중요한 역할을 한다. 이를 통해 스프링 애플리케이션 개발이 더욱 간편하고 효과적이 된다. 1. @Component 사용법 및 특징 기본 사용법 @Component 어노테이션은 스프링 프레임워크에서 클래스를 자동으로 빈으로 등록하기 위해 클래스 레벨에서 사용된다. 이는 스프링 컨테이너가 애플리케이션 시작 ..
Spring에서의 인스턴스 생성 비교: new 키워드 대 DI
·
Spring 기초/Spring 기초 지식
Spring과 자바의 2가지 인스턴스 생성방법의 차이를 알아보자 내가 완전 1개월 차 주니어 시절 스프링을 통해 개발을 하던 도중 컨트롤러 메서드를 작성할 일이 생겼는데 이때 메서드의 매게 변수로 객체를 받는 것과 메서드 내부에서 new를 통해 객체를 생성해서 사용하는 것에 대한 궁금증이 생겼다. 10년 이상된 프로젝트였는데 어떤 객체는 new를 통해 생성하였으며 어떤 객체는 Map이나 List를 통해 파라미터로 받아서 사용하고 있었다. 어떤 방식이 더 좋은 방법인지 간단하게 알아보도록 하자 1. Spring에서의 DI (Dependency Injection) 이해 1-1. Spring에서의 DI(Dependency Injection) 이해하기 Spring Framework에서 DI(Dependency ..