👩💻 : 최근 java에서는 resource를 지원 안 하고, autowired를 통해 bean에 편하게 등록할 수 있는데 왜 resource를 썼나요?
최근 들어온 신입의 질문에 나는 대답을 못했다. 그래서 대답해주기 위해 해당 내용을 찾아보았고, 그 내용을 정리해보려고 한다.
Bean 타입을 통해서 주입할 Bean 객체를 찾는다. 만약 타입으로 연결이 안된다면 이름을 통해 찾는다.
Field, Method, Constructor 에 사용할 수 있다.
Spring 에서만 지원하는 Dependency 용도 Annotation 이다. 다른 프레임워크에서 자바코드를 사용하고자 한다면 자바에서 제공하는 @Resource, @Inject 사용해야함.
@Autowired(required = false) private Wolf dog;
@Autowired와 다르게 타입이 아닌 이름을 기준으로 연결한다.
멤버변수, Setter Method 에서 사용이 가능하다.
일반적으로 name = "" 을 통하여 이름을 직접 지정하여 연결한다.
@Resource(name = "dog") // 이와 같이 지정하면 cat이 아닌, dog를 찾아 연결한다. private Wolf cat;
가장 큰 차이점은 타입과 이름으로 구분을 한다는 점이라고 생각하고, 추가적으로 실무자에게 질문을 하여 얻은 답이 있다.
나 : oo님 이런 질문이 있었는데 왜 저희는 resuorce를 쓴거에요? 사실 저도 다른 소스 배낀거라 ㅎㅎ;;
👴 : resource는 name이라는 괄호 안에 명시적으로 표현을 할 수 있어서 유지보수에 용이해. 우리 회사는 그렇게 쓰긴 해. 이 프로젝트를 소수의 인원이 계속 진행하는 것이 아니기도 하고, java를 낮은 버전을 사용한다면 autowired보단 resource로 코드를 관리하는게 좀 더 유용하거든.
라는 사수의 답변이였다.
java를 높은 버전을 사용하고 autowired보다 명시적으로 사용이 필요하다면 resuorce를 쓰는게 적어도 지금 상황에서는 좋을 거 같다. 하지만 너무 종속되어 쓰진말고 상황에 맞춰서 잘 쓰자! 물론 회사의 특성이나 개인의 성향차이로 달라질 수 있다고 생각한다!