/
빈 이름짓기
빈 이름짓기
식별자
개요
- 모든 빈에는 하나 이상의 식별자가 있음.
- 이러한 식별자는 빈을 제공하는 컨테이너 내에서 반드시 유일해야 함.
- 식별자는 id 또는 name으로 설정이 가능함.
- 보통 빈에는 단 하나의 식별자가 있지만 하나 이상의 식별자가 필요힌 경우 추가적인 식별자로 별칭(alias)을 고려할 수 있음.
식별자의 기본 값
빈의 식별자(BeanName)는 org.springframework.beans.factory.support.BeanNameGenerator 인터페이스를 사용하여 정의함.
XML 기반의 설정 메타데이터
- 패키지를 포함한 클래스명(qualified name) + # + 해당 클래스 인스턴스 순번(0부터 시작)
- 예시 : kr.co.swtest.sample.CustomerDto#0
- 참고
애노테이션 기반의 설정 메타데이터
- @Component 애노테이션이 있는 클래스명(단, 첫 문자는 소문자로 시작하는 클래스명임. 패키지는 들어가지 않음.)
- 예시 : kr.co.swtest.sample.CustomerDto 클래스의 경우 customerDto
- 참고
자바 기반의 설정 메타데이터
- @Bean 애노테이션이 있는 메서드명
- 참고
참고
빈 작명 관례(식별자)
- 빈의 이름을 지을 때는 인스턴스의 필드 이름에 대한 표준 자바 관례를 따름.
- 즉, 빈 이름은 소문자로 시작하고, 카멜케이스로 사용함. (ex. accountManager, accountService, userDao, loginController)
- 빈의 이름을 일관성 있게 지으면 설정을 보다 읽기 쉽고, 이해하기 쉬움.
- 스프링 AOP를 사용한다면 이름과 관련된 빈의 세트에 어드바이스(advice)를 적용할 때 큰 도움이 됨.
- http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html#beans-beanname
참고
- 클래스 패스에서 컴포넌트 스캐닝을 하면, 위의 규칙에 따라 이름 없는 컴포넌트에 대한 빈 이름을 생성함.
- 기본적으로 간단한 클래스 이름을 사용하고, 초기 문자를 소문자로 바꿈.
- 두 개 이상의 문자가 있고 첫 번째와 두 번째 문자가 모두 대문자인 경우 원래의 케이스가 보존됨.
- java.beans.Introspector 클래스의 decapitalize 메서드와 동일한 규칙을 사용하고 있음.
사용 예시
XML 기반의 설정 메타데이터
- [작성중] github 예제 필요
애노테이션 기반의 설정 메타데이터
- [작성중] github 예제 필요
자바 기반의 설정 메타데이터
- [작성중] github 예제 필요