![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bMJKcD/btq4p73lmRj/TLKpKeCpoOto1GZqDYkoek/img.png)
이번에는 애플리케이션 컨텍스트에 대해 간단히 알아보도록 하겠습니다. 1. 애플리케이션 컨텍스트(Application Context) [ 애플리케이션 컨텍스트(Application Context)란? ] Spring에서는 빈의 생성과 관계설정 같은 제어를 담당하는 IoC(Inversion of Control) 컨테이너인 빈 팩토리(Bean Factory)가 존재한다. 하지만 실제로는 빈의 생성과 관계설정 외에 추가적인 기능이 필요한데, 이러한 이유로 Spring에서는 빈 팩토리를 상속받아 확장한 애플리케이션 컨텍스트(Application Context)를 주로 사용한다. 애플리케이션 컨텍스트는 별도의 설정 정보를 참고하고 IoC를 적용하여 빈의 생성, 관계설정 등의 제어 작업을 총괄한다. 애플리케이션 컨텍..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/defFpy/btq4kVvBKcc/OxugXGKzIKD5AmMJ1zGrZ1/img.png)
1. 의존성 주입(Dependency Injection)의 개념과 필요성 [ 의존성 주입(Dependency Injection) 이란? ] Spring 프레임워크는 3가지 핵심 프로그래밍 모델을 지원하고 있는데, 그 중 하나가 의존성 주입(Dependency Injection, DI) 이다. DI란 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴으로, 인터페이스를 사이에 둬서 클래스 레벨에서는 의존관계가 고정되지 않도록 하고 런타임 시에 관계를 동적으로 주입하여 유연성을 확보하고 결합도를 낮출 수 있게 해준다. 의존성이란 한 객체가 다른 객체를 사용할 때 의존성이 있다고 한다. 예를 들어 다음과 같이 Store 객체가 Pencil 객체를 사용하고 있는 경우에 우리는 Store객체가 Pencil 객체..
1. 좋은 코드는 어떤 코드일까? [ 1. 이야기하는 코드 ] 과거에 수능을 치르던 시절, 국어 영역 김동욱 선생님은 좋은 지문이라면 부족함이 있는 문장 뒤에 부연 설명이 있어야 한다는 얘기를 하셨습니다. 예를 들어 다음과 같은 문장을 우리가 읽었다고 합시다. 망나니 개발자는 오늘도 일을 하러 간다. 위의 문장은 상당히 함축적이기 때문에, 우리가 위의 문장을 읽었다면 당연히 다음과 같은 의문이 생길 것입니다. 어떤 일을 하러 가는데? 혹은 직업이 뭔데? 그리고 좋은 지문이라면 위의 문장에 이어 다음과 같은 이야기가 있을 것입니다. 망나니 개발자는 오늘도 일을 하러 간다. 그는 N사를 다니는 백엔드 개발자이다. 그는 Java와 Spring 프레임워크를 이용해 개발을 하고 있다. 저는 좋은 코드 역시 좋은 ..
1. 빈(Bean) 등록과 조회 규칙 [ 빈(Bean) 등록 ] Spring은 기본적으로 메소드/클래스의 이름을 Bean의 이름으로 사용한다. @Bean public DiscountPolicy fixDiscountPolicy() { return new FixDiscountPolicy(); } @Bean public DiscountPolicy rateDiscountPolicy() { return new RateDiscountPolicy(); } 하지만 개발자가 직접 빈의 이름을 부여할 수도 있다. @Bean("fixDiscountPolicy") public DiscountPolicy fixDiscountPolicy() { return new FixDiscountPolicy(); } @Bean("rateDi..
1. 디미터의 법칙(Law of Demeter) [ 디미터의 법칙(Law of Demeter) 이란? ] 디미터의 법칙은 “Object-Oriented Programming: An Objective Sense of Style” 에서 처음으로 소개되었다. Demeter라는 프로젝트를 진행하던 개발자들은 어떤 객체가 다른 객체에 대해 지나치게 많이 알다보니, 결합도가 높아지고 좋지 못한 설계를 야기한다는 것을 발견하였다. 그래서 이를 개선하고자 객체에게 자료를 숨기는 대신 함수를 공개하도록 하였는데, 이것이 바로 디미터의 법칙이다. 즉, 디미터의 법칙은 다른 객체가 어떠한 자료를 갖고 있는지 속사정을 몰라야 한다는 것을 의미하며, 이러한 이유로 Don’t Talk to Strangers(낯선 이에게 말하지 ..