면접 - 스프링프레임워크 12

개발자 면접 질문 - AOP 정의

1. AOP - 관점을 기준으로 프로그래밍 하는 기법 - 공통 관심 사항을 구현한 코드를 핵심 로직을 구현한 코드 안에 삽입하는 것 2. 주요 용어 - Joinpoint : Advice를 적용 가능한 지점을 의미한다. (메서드 호출, 필드 값 변경 등) - Pointcut : Joinpoint의 부분 집합. 실제 Advice가 적용되는 Joinpoint를 나타낸다. - Advice : 언제 공통 관심 기능을 핵심 로직에 적용할 지를 정의한다. - Weaving : Advice를 핵심 로직 코드에 적용하는 것을 의미한다. - Aspect : 여러 객체에 공통으로 적용되는 공통 관심 사항을 의미한다. * Weaving 방식 - 컴파일시 - 클래스 로딩시 - 런타임 시 (프록시를 이용하여 AOP를 적용한다.)..

개발자 면접 질문 - 의존성 주입 정의

1. 의존성 주입 - 객체 간의 의존 관계를 객체 자신이 아닌 외부의 조립기가 수행한다. 2. 구현 방식 - 생성자 방식 : 객체를 생성하는 시점에 의존하는 객체를 모두 전달받을 수 있다. - Setter (프로퍼티) 방식 : 어떤 의존 객체를 설정하는지 메서드의 이름으로 알 수 있다. - 필드(인터페이스) 방식 : 의존성을 주입하는 함수를 포함한 인터페이스를 작성하고, 인터페이스를 구현하도록 함으로써 실행시에 이를 통하여 의존성을 주입 * Field 방식을 추천하지 않는 이유 - 단일 책임의 원칙 위반 : 생성자 방식을 사용하면 파라미터가 많아짐과 동시에 하나의 클래스가 많은 책임을 갖는것을 알수 있으나 필드 방식은 의존성 주입이 쉬워 알기 어렵다. - 객체가 변할 수 있다.(불변성) : 생성자 방식과..