@Resource 어노테이션과 @Autowired 어노테이션의 차이 두 어노테이션 모두 의존성을 주입하는 어노테이션이다. 해당 어노테이션을 사용하여 IoC 컨테이너에 등록된 빈 객체를 자동으로 주입한다. @Autowired 어노테이션에 대한 자세한 설명은 검색하면 많은 정보가 나오므로 생략하도록 한다. @Resource 어노테이션과 어떤 차이가 존재하는지를 중점적으로 살펴본다. 편의상 해당 글에서 모든 의존성 주입 방법 예시는 필드 주입으로 한다. @Autowired - 필드, 메서드, 생성자에 사용할 수 있다. - Bean의 타입을 사용해서 주입할 빈 객체를 찾는다. - 하나의 인터페이스는 한 개의 클래스로만 구현할 수 있다. (두 개 이상의 클래스가 구현하면 안 된다.) 마지막 특징 때문에 @Reso..
객체 지향 프로그래밍 객체(Object)들의 모임이 서로 협력하는 것이 객체 지향 프로그래밍이다. 이때 메시지를 사용하여 객체끼리 협력한다. 객체란 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있고, 다른 것과 식별 가능한 것을 말한다. 나는 첫 프로그래밍을 C언어로 접했기 때문에 객체 지향의 장점을 절차 지향과 비교해 예시를 들 때 이해가 잘 됐다. 어떤 프로그램이 절차 지향 방식으로 짜였다면 프로그램에 어떠한 기능을 제외하려고 할 때 그 기능과 관련된 앞뒤 코드를 살펴보고, 삭제할 기능과 연결된 부분을 수정해야 한다(이는 물론 객체 지향에서도 마찬가지이긴 하다). 그러나 절치 지향과 객체 지향은 수정해야 할 코드의 범위가 다르다. 객체 지향 방식으로 (잘) 설계했다..
의존성 주입 (Dependency Injection, DI) MVC 모델을 사용하여 개발한다고 가정할 때 Controller에서는 Service에 있는 메서드를 호출해야 하고, Service에서는 Repository(or DAO,...)에 있는 메서드를 호출해야 한다. 이런 상황에서 Controller에서는 Service에 의존한다 말하고, Service는 Repository에 의존한다고 얘기한다. interface MemberRepository {...} public class JdbcMemberRepository implements MemberRepository {...} public class MyBatisMemberRepository implements MemberRepository {...} p..