전체 글 41

싱글톤 (Singleton)

특정 클래스의 인스턴스가 오직 하나만 생성되고, 이후에는 그 인스턴스를 공유하여 사용하는 패턴 객체 생성 및 리소스 소비를 최적화하고, 전역적으로 접근 가능한 단일 지점을 제공 단일 인스턴스 전역적 접근 지연 로딩 public class Singleton { // 정적 변수로 인스턴스를 저장 private static Singleton instance; // 생성자를 private으로 선언하여 외부에서 인스턴스 생성 불가능하게 함 private Singleton() { } // 인스턴스 반환 메서드 public static Singleton getInstance() { // 인스턴스가 없을 경우에만 생성 if (instance == null) { instance = new Singleton(); } re..

테스트 주도 개발 (Test Driven Development : TDD)

코드를 작성하기 전에 테스트 케이스를 먼저 작성하는 접근 방식 테스트 작성 (Test): 개발자는 먼저 개발할 기능 또는 모듈에 대한 테스트 케이스를 작성합니다. 이 테스트 케이스는 해당 기능이나 모듈이 어떻게 동작해야 하는지를 정의합니다. 테스트 실행 (Run): 작성한 테스트 케이스를 실행합니다. 이때, 아직 개발되지 않은 코드이므로 테스트는 실패할 것입니다. 코드 작성 (Code): 테스트를 통과하기 위한 코드를 작성합니다. 목표는 테스트를 통과하는 코드를 작성하는 것입니다. 테스트 재실행 (Run): 코드를 작성한 후에는 다시 테스트를 실행하여 테스트 케이스가 통과하는지 확인합니다. 통과하지 않으면 코드를 수정하여 다시 시도합니다. 리팩토링 (Refactor): 테스트가 통과되면 코드를 리팩토링하..

learn/methodology 2023.09.21

스크럼 (Scrum)

애자일 방법론 중 하나로, 효율적인 협업과 고객 중심의 접근을 강조하는 프레임워크 스프린트(Sprint): Scrum은 작은 주기를 반복하는 방식으로 작업을 진행. 이 작은 주기를 "스프린트"라고 하며, 스프린트 기간 동안 일정 목표를 달성하기 위한 작업을 수행. 일반적으로 2주에서 4주 사이의 기간으로 설정. 제품 백로그(Product Backlog): 개발할 기능, 작업 항목, 요구사항 등을 모아놓은 목록을 제품 백로그라고 함. 이 목록은 우선순위를 가지고 있어 가장 중요한 항목이 먼저 처리됨. 스크럼 팀(Scrum Team): 스프린트를 수행하는 작은 자기 조직된 팀을 형성. 이 팀은 개발자, 제품 책임자(Product Owner), 스크럼 마스터(Scrum Master)로 구성되며, 각각 역할과 ..

learn/methodology 2023.09.21

폭포수(Waterfall)

요구사항 분석 → 설계 → 개발(구현) → 테스트(검증) → 배포(유지보수) 소프트웨어 개발 및 프로젝트 관리를 위한 전통적인 방법론. 개발 단계가 순차적이고 선형적으로 진행되는 고전적인 방식으로, 각 단계가 이전 단계의 완료를 기다리는 특징을 가짐 Waterfall 방법론은 변경에 취약하며 요구사항이나 환경이 변할 경우 유연하게 대처하기 어렵다는 단점 One Big SDLC

learn/methodology 2023.09.21

어노테이션(Annotation) - 설정(Configuration) 관련

설정(Configuration) 관련 @Configuration 해당 클래스가 Spring Bean 구성 정보를 포함하고 있음을 나타냄 @Configuration을 클래스에 적용하고 @Bean을 method에 적용하여 @Autowired로 Bean 사용 @Configuration public class AppConfig { @Bean public MyService myService() { return new MyService(); } @Bean public MyRepository myRepository() { return new MyRepository(); } } @Service public class MyService { private final MyRepository myRepository; @Aut..

learn/spring 2023.09.21

어노테이션(Annotation) - 의존성 주입(Dependency Injection) 관련

의존성 주입(Dependency Injection) 관련 @Autowired 의존성 주입(Dependency Injection)을 수행 필드 주입(Field Injection) 생성자 주입(Constructor Injection) Setter 메서드 주입(Setter Method Injection) //필드 주입(Field Injection) @Service public class UserService { @Autowired private UserRepository userRepository; // ... } //생성자 주입(Constructor Injection) @Service public class UserService { private final UserRepository userRepositor..

learn/spring 2023.09.21

어노테이션(Annotation) - 컴포넌트 스캔(Component Scan) 관련

컴포넌트 스캔(Component Scan) 관련 자바 코드에 메타데이터를 부여하여 해당 코드의 동작 방식을 정의하거나 특정 기능을 활성화하는 데 사용되는 특별한 주석 형태의 요소. 클래스, 메서드, 필드 등과 같은 다양한 요소에 적용할 수 있으며, 애플리케이션을 설정하고 관리 Annotations are special comment-like elements used in Java code to provide metadata, define the behavior of the code, or activate specific functionalities. They can be applied to various elements such as classes, methods, fields, and more. Ann..

learn/spring 2023.09.21

빈 (Bean)

빈 (Bean) Spring에서 애플리케이션의 핵심을 이루고 Spring IoC 컨테이너에 의해 관리되는 객체를 빈(Bean)이라 함. 빈은 Spring IoC 컨테이너에 의해 인스턴스화되고 조립되며 관리되는 객체임. In Spring, the objects that form the backbone of your application and that are managed by the Spring IoC container are called beans. A bean is an object that is instantiated, assembled, and otherwise managed by a Spring IoC container. Java 클래스를 Bean으로 선언하기 위해 @Component, @Ser..

learn/spring 2023.09.21

스프링 컨테이너 (Spring Container)

스프링 컨테이너 (Spring Container) 스프링 컨테이너는 Spring에서 빈(Bean)들의 생명주기를 관리하는 Spring Framework의 코어(Core)이다. The Spring container is the core of the Spring Framework, responsible for managing the lifecycle of beans and facilitating dependency injection. Bean 객체의 생성과 소멸 관리 Bean 객체 간의 의존성 주입(Dependency Injection) 설정 정보를 통한 Bean 객체의 설정과 구성 Bean을 Singleton으로 관리하므로 여러 곳에서 동일한 Bean 인스턴스를 공유 AOP를 통해 관점 지향 프로그래밍을 ..

learn/spring 2023.09.19