반응형 전체 글160 컴파일 타임 의존성과 런타임 의존성 객체지향 프로그래밍에서는 객체간의 의존성이 빈번하게 발생한다.의존이란 상위 모듈(호출자)이 기능 수행을 위해 하위 모듈(피호출자)의 자원을 사용하는 것을 말한다.(하위 모듈의 변경사항이 상위 모듈에 영향을 끼침)이러한 의존관계의 설정은 컴파일 타임에 결정되기도 하고 런타임에 결정되기도 한다.컴파일 타임 의존성과 런타임 의존성은 말그대로 어느 시점에 의존성이 결정되느냐의 차이이다. 자바 프로그램이 실행될 때, 자바 파일이 컴파일러에 의해 컴파일 되고이후 jvm의 런타임 영역에 클래스 요소들이 적재된다.컴파일 타임은 컴파일러에 의해 컴파일이 이루어지는 시점을 의미하고,런타임은 클래스파일이 jvm의 런타임 영역에 적재된 이후의 시점을 의미한다.따라서 컴파일 타임 의존성과 런타임 의존성은 아래와 같이 구분할 수.. 2024. 2. 11. [스프링 개념] 동일 타입 빈, 빈 이름 중복, DI 구현 방법 1. 동일 타입 빈이 여러개인 경우 주입되는 빈 기준@Autowired를 통한 빈 주입 기준은 아래와 같다.타입 기준이름 기준의존 주입 시 해당 클래스 타입의 스프링 빈을 찾고 여러개가 존재하면 이름을 기준으로 빈을 찾는다. 이때 이름이 일치하는 것이 없다면 스프링은 어떤 빈을 주입시킬지 판단할 수 없어 예외를 발생시킨다. 예외는 런타임에 발생된다. 예제. 빈이 존재하지 않는 경우interface Patty { ... }@Componentclass Hamburger(@Autowired val patty: Patty) { ... } 위와 같이 스프링 빈으로 등록되지 않은 빈을 의존 주입 받으려고 하는 경우 구동시점에 에러를 발생시킨다. 예제. 빈이 여러개인 경우위와 동일한 예제에서 아래와 같이 Beef.. 2024. 1. 2. [스프링 개념] IOC, DI와 DIP IOC(Inversion of Control, 제어의 역전)제어의 역전이란 프로그램의 제어 흐름 구조가 뒤바뀌는 것이다.프로그램의 제어권이 개발자가 작성한 코드에 있는 것이 아니라 외부에 존재하는 것을 말한다.이때 프로그램의 제어권에 포함되는 내용은 사용할 객체 결정, 객체 생성, 메서드 호출 등 프로그래밍 언어로 표현할 수 있는 모든 행위를 포함한다. 제어의 역전을 통해 제어권을 외부에 넘긴다는 것은 그에 대한 책임도 넘긴다는 것이다. 예를 들면 IOC 개념이 적용된 DI(의존주입)에서 객체 생성, 의존 객체 결정, 의존 객체 주입은을 프레임워크가 대신하니이에대한 책임도 프레임워크가 갖고 개발자는 객체 생성, 사용 객체 결정에 대한 책임에서 벗어난다.(프로그래밍 코드로 책임을 벗어날 수 있다는 것이고,.. 2023. 12. 31. Hexagonal 아키텍쳐 시스템 구성요소3개의 큰 블록으로 구성User Interface 어떤 유저인터페이스 환경에서라도 실행될 수 있게 하는 것(controller는 웹과 모바일 유저 인터페이스 환경에서 실행을 가능하게 하고, console command는 cli 유저 인터페이스 환경에서 실행을 가능하게 한다.)Application Core비즈니스 로직을 담고 있으며, user interface에 의해 호출됨어떤 종류의 user interace인지에 상관 없이 모두 동일한 결과를 반환함 Infrastrure Coreapplication core와 연결, db, 검색엔진, 써드파티 API와 같은 툴 Tool의 연결 : Port & Adapterapplication이 사용하는 DB, 검색엔진, 웹서버, CLI 콘솔과 같은 외부 .. 2023. 12. 18. 이전 1 ··· 13 14 15 16 17 18 19 ··· 40 다음 반응형