스프링에서의 의존성 주입이란스프링에서는 어떻게 구현하는가?왜 의존성 주입을 사용해야 하는가?스프링에서의 의존성 주입이란객체 지향 프로그래밍에서 중요한 기술.객체가 다른 객체들에 의존할 때 필요한 의존 객체들을 외부에서 주입해주는 방법스프링에서는 어떻게 구현하는가?생성자 주입생성자를 통해 의존성을 주입받음. 객체가 생성될 때 필요한 모든 의존성이 제공되어야 하므로, 객체는 항상 완전하게 초기화 된 상태로 사용될 수 있음.세터 주입세터 메소드를 통해 의존성을 주입받음. 이 방법은 객체 생성 후에도 의존성을 변경할 수 있어 유연성을 제공하지만, 객체가 완전히 초기화 되지 않은 상태로 사용될 가능성이 있음.필드주입필드에 직접 의존성을 주입함. 이 방법은 코드가 간결해지지만, 테스트와 코드 재사용 측면에서는 권장..
DI 와 IoC제어의 역전에서 기재한 내용임.DI 와 DIP(Dependency Inversion Principle)의존성 역전원칙소프트웨어 아키텍처 원칙 중 하나로, 고수준 모듈이 저수준 모듈에 의해서는 안되고, 둘 다 추상화에 의존해야 한다는 원칙세부사항(구현) 이 아닌 추상화(인터페이스) 에 의존해야함.public interface BookRepository{ List findAll();}public class SqlBookRepository implements BookRepository{ public List findAll() { // SQL 데이터베이스에서 책을 찾는 구현 return new ArrayList(); }}public class BookSer..
스프링에서의 의존성 주입이란객체 지향 프로그래밍에서 중요한 기술.객체가 다른 객체들에 의존할 때 필요한 의존 객체들을 외부에서 주입해주는 방법스프링에서는 어떻게 구현하는가?생성자 주입생성자를 통해 의존성을 주입받음. 객체가 생성될 때 필요한 모든 의존성이 제공되어야 하므로, 객체는 항상 완전하게 초기화 된 상태로 사용될 수 있음.세터 주입세터 메소드를 통해 의존성을 주입받음. 이 방법은 객체 생성 후에도 의존성을 변경할 수 있어 유연성을 제공하지만, 객체가 완전히 초기화 되지 않은 상태로 사용될 가능성이 있음.필드주입필드에 직접 의존성을 주입함. 이 방법은 코드가 간결해지지만, 테스트와 코드 재사용 측면에서는 권장되지는 않음.스프링 프레임워크는 이러한 의존성 주입 기능을 내부적으로 구현하기 위해 리플렉션..
IoC(Inversion of Control)제어의 역전이란소프트웨어 설계 원칙 중 하나로 프로그래밍에 있어 객체의 생성 및 관리 책임을 개발자에서 전체 애플리케이션 또는 프레임워크에 위임하는 디자인 원칙을 말함.일반적으로 객체의 생성과 그 객체 간의 의존성 결합에 관한 제어권이 개발자에서 프레임워크로 넘어가게된다.제저의 역전의 구성 요소의존성 주입객체가 필요로 하는 의존성 외부에서 주입받는 방식을 사용.의존성 주입은 생성자 주입, 세터 주입, 필드 주입 등 다양한 방법으로 수행될 수 있음.생성자 주입생성자 주입은 생성자를 통해 의존성을 주입받는 방법임. 이 방식은 의존성이 필수적일 때 주로 사용됨.import org.springframework.stereotype.Component;@Componentp..
POJO 기반의 구성POJO 란?Plain Old Java Object 의 약자특정 규약이나 프레임워크, 클래스를 상속받지 않는 간단한 Java 객체를 말함.Serializable 인터페이스 처럼 최소한의 Java 표준을 따르며, 특정 인터페이스를 구현하거나 클래스를 확장하지 않고도 자유롭게 작성될 수 있음.public interface MessageService { String getMessage();}public class SimpleMessageService implements MessageService { @Override public String getMessage() { return "Hello, Spring framework" }}위 MessageServic..
OOP 란?Object-Oriented ProgrammingC언어 같이 절차지향적이 아니라 객체 지향적으로 프로그램한다는 뜻객체를 기준으로 코드를 나누어 구현특징캡슐화(Encapsulation)하나의 객체에 대해 그 객체가 특정한 목적을 위한 필요한 변수나 메소드를 하나로 묶는 것을 의미정보 은닉캡슐화를 하는 중요한 목적은 정보은닉에 있다. public 으로 된 객체에 접근해서 정보 변경이 가능하여 private 로 해서 접근을 제한해야함.getter, setter 로 정보 접근해야함.캡슐화와 정보 은닉은 동일 개념이 아님. 캡슐화를 하면 정보를 감출 수 있기 때문에 정보은닉이 가능하다는 특징이 있다는 것추상화(Abstraction)목적과 관련이 없는 부분을 제거하여 필요한 부분만을 표현하기 위한 개념공..
클래스 변수와 인스턴스 변수클래스 변수 (static 변수) : 클래스별로 유일인스턴스 변수 : 인스턴스가 소유하는 변수순서상위 클래스 초기화객체가 상속받은 클래스가 있다면, 상위 클래스의 생성자가 먼저 호출됨.이 과정에서 상위 클래스의 멤버 변수들이 초기화 됨.멤버 변수 선언과 함께 초기화클래스 내에서 선언과 동시에 초기화된 멤버 변수들은 상위 클래스의 생성자 호출 직후, 하위 클래스의 생성자가 실행되기 전에 초기화됨.인스턴스 초기화 블록클래스 내에 인스턴스 초기화 블록(중괄호 {} 로 감싼 코드 블록) 이 존재하는 경우, 멤버 변수 선언과 함께 초기화된 후에 실행됨.생성자 클래스의 생성자가 실행됨. 생성자는 모든 멤버 변수와 초기화 블록이 처리된 후에 해당 클래스의 인스턴스를 마무리 짓기 위해 실행됨..
란?여러 스레드가 동시에 실행되어 효율성과 성능을 높이는 프로그래밍 기법Java 는 멀티스레딩을 지원하기 위해 여러 클래스와 인터페이스를 제공함.1. Thread 클래스와 Runnable 인터페이스Thread 클래스 상속 : Thread 클래스를 상속받아 run 메소드를 오버라이드 함.Runnable 인터페이스 구현 : Runnable 인터페이스를 구현하고 인스턴스를 Thread 객체에 전달하여 스레드를 생성.2. Thread 생명주기New : Thread 가 생성되었지만 아직 시작되지 않은 상태Runnable : 실행 가능한 상태로, 스케줄러가 이 스레드를 선택해 실행시킬 수 있음.Blocked : 동기화된 블록에 의해 접근이 제한되어 실행을 기다리는 상태Waiting : 다른 스레드의 특정 활동이 완..
Comment