본문 바로가기

전체 글142

의존관계 주입 구체적인 의존 오브젝트와 그것을 사용할 주체라고 불리는 오브젝트를 런타임시에 연결해주는것 3가지를 충족해야함 1. 클래스나 코드에는 런타임 시저의 의존관계가 드라나지않음 인터페이스에 의존해야함 2. 런타임 시점 의존관계나 컨테이너와 팩토리같은 제3의 존재가 결정 3. 의존관계는 상용할 오브젝트의 참조를 외부에서 제공해줌 의존관계 주입은 다양한 형태로 적용할 수 있다di의 가장 중요한 개념은 제 3자의 도움을 통해 두 오브젝트 사이의 유연한 관계가 설정되도록 만드는것이 개념만 따른다면 di를 이루는 오브텍트와 구성요소의 구조나 관계는 다양하게 만들수있음일반적으로 di는 의존관계에 있는 두개의 오브젝트와 이 관계를 동적으로 설정해주는 오브젝트 팩토리(di 컨테이너) 그리고 이를 사용하는 클라이언트라는 4개.. 2025. 12. 21.
싱글톤 패턴 어떤 클래스를 애플리케이션에서 제한된 인스턴수 개수 또는 하나만 존재하도록 강제함 이렇게 만들어지는 클래스의 오브텍트는 애플리케이션 내에서 전역적 접근가능 단일 오브젝트만 존재해야하고 이것을 애플리켕션의 여러 곳에서 공유하는 경우에 사용 public class AppConfig { private static final AppConfig singleton = new AppConfig(); private final Map configs = new HashMap(); public static AppConfig getSingleton() { return singleton; } // 현재는 아무나 생성 가능! private AppConfig() { .. 2025. 12. 21.
스프링 빈 관련 용어 빈스프링이 제어권을 가지고 직접 만들고 관계를 부여하는 오브젝트를 빈이라 함 스프링 빈은 스프링 컨테이너가 생성과 관계설정, 사용 등을 제어해주는 제어의 역전이 적용된 오브젝트임 빈 팩토리스프링의 IOC를 담당하는 핵심 컨테이너 빈을 등록 생성 조회 반환 관리 담당빈 팩토리를 좀 더 확장한 애플리케이션 컨택스트를 주로 사용함 애플리케이션 컨택스트빈 팩토리를 확장한 IOC 컨테이너 빈의 등록 관리등은 빈팩토리와 동일 스프링이 제공하는 각종 부가 서비스 추가 제공싱글톤을 저장하고 관리하는 싱글톤 레지스트리이기도함애플리케이션 컨텍스트는 IOC방식을 따라 만들어진 일종의 빈 팩토리애플리케이션 컨택스트와 빈 팩토리는 동일하다고 생각하면 됨빈 팩토리는 빈을 생성하고 관계르 설정하는 ioc의 기본 기능에 초점을 맞춘.. 2025. 12. 21.
제어의 역전 오브젝트가 자신이 사용할 오브젝트를 스스로 선택하지 않음 생성하지도 않음 어떻게 만들어지고 어디서 사용되느니 아루없음 모든 제어 권한을 다른 대상에게 위임 모든 오브텍트는 위임받은 제어 권한을 갖는 특별한 오브젝트에 의해 만들어짐 2025. 12. 21.
데드락 데드락이 발생할수있는 조건 4가지 4가지 조건을 다 채워야 발생한다.1. 상호배제 (Mutual exclusion) : 자원은 한 프로세스만 사용해야한다.2. 점유대기 (Hold and wait) : 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용중인 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야한다.3. 비선점 (No preemption) : 다른 프로세스에 할당된 자원을 강제로 빼앗을 수 없다4. 순환 대기 (Circluar wait) : 한 프로세스는 다음 프로세스가 점유한 자원을 대기하고 다음 프로세스는 그 다음 프로세스가 점유한 자원을 대기하고 그 다음 프로세스는 처음 프로세스가 점유한 자원을 대기해야한다. 참고로 레이스 컨디션과 데드락은 다름레이스 컨디션은 타이밍문제데드.. 2025. 12. 15.
스프링 AOP 부가로직과 핵심기능의 분리를 위해여러곳에서 사용하는 부가로직 횡단 관심사가 됨변경 지점은 하나가 될 수 있도록 모듈화되어야 함 부가기능과 부가 기능을 어디에 적용할지 선택하는 기능을 합친 하나의 모듈이 에스펙트다어드바이저도 어드바이스오 포인트컷을 가지고 있어 개념상 하나의 에스팩트에스팩트는 관점이라는 뜻 횡단 관심사와 관련 애스팩트를 사용한 방식을 관점지향프로그래밍 AOP다AOP는 OOP를 대체하는게 아니라 OOP의 부족한 부분을 보조함 에스팩트J는 AOP의 구현으로 스프링도 AOP를 지원하지만 결국 대부분 에스팩트J의 문법을 쓰고 에스펙트J의 일부기능만 지원 횡단 관심사는 오류 검사 및 처리, 캐싱 모니터링, 로깅, 동기화 등 AOP 적용 방식은 3가지 있다1. 컴파일2. 클래스 로딩3. 런타임(프록.. 2025. 12. 13.