1. Bean의 식별자
- Bean의 식별자로는 id와 name이 있다.
- Bean은 2개 이상의 식별자도 가질 수 있다. Bean에게 2개 이상의 식별자를 주는 이유는 해당 bean을 사용하는 곳에 따라 다양한 이름으로 참조할 수 있도록 함으로써 이름을 짓는 관례를 모두 맞춰줄 수 있게 하기 위함이다.
- Bean의 식별자는 애플리케이션 컨텍스트 내에서 고유해야 한다.
2. id와 name의 차이점
1) id
- id에는 다음과 같은 작성 규칙이 존재한다.
- 공백이 들어갈 수 없다.
- 첫 글자는 알파벳, 밑줄(_), 허용된 일부 문자만 사용할 수 있다.
- 나머지 글자는 알파벳, 밑줄, 숫자, 점(.)을 허용하며, 그 외의 특수문자는 사용할 수 없다.
- id를 생략한다면 컨테이너는 자동으로 id를 부여해준다.
2) name
- name은 특별한 작성 규칙이 없다.
- name에는 하나 이상의 이름을 부여할 수 있다.
3. id와 name의 설정
1) xml
- <bean> 태그의 id와 name 속성을 이용하면 된다. 아래와 같이 id와 name을 동시에 사용해도 된다.
<bean id="..." name="..." class="..." />
- name에는 콤마(,) 또는 세미콜론(;)을 이용하여 하나 이상의 이름을 부여할 수 있다.
<bean name="abc,123;내서비스" class="..." />
- 기존의 <bean>을 변경하고 싶지 않다면 <alias> 태그를 이용하여 bean에 별칭을 부여할 수도 있다.
<bean id="dataSource" ... />
<alias name="dataSource" alias="systemDS" />
2) Annotation
- 클래스를 bean으로 등록하면 클래스 이름의 첫 글자만 소문자로 바뀌어서 bean 이름이 된다.
- 메소드를 bean으로 등록하면 메소드의 이름이 그대로 bean 이름이 된다.
- 클래스를 이용한 bean 설정의 경우에는 스테레오타입 어노테이션의 파라미터에 bean 이름을 지정할 수 있다.
@Component("myUserService")
public class UserService {
...
}
또는, @Named 어노테이션을 이용하여 bean 이름을 지정할 수도 있다.
@Component
@Named("myUserService")
public class UserService {
...
}
드물지만, 스테레오타입 어노테이션과 @Named 어노테이션을 동시에 사용하는 경우에는 하나의 이름으로 통일해야 한다.
- 메소드를 이용한 bean 설정의 경우에는 @Bean의 name 속성을 이용하여 하나 이상의 bean 이름을 지정할 수 있다.
@Bean(name="myUserDao")
public UserDao userDao() {
...
}
@Bean(name={"userDao", "myUserDao"})
public UserDao userDao() {
...
}
● 참고 자료 : 토비의 스프링 3.1 Vol.2
'Spring Series > Spring Framework' 카테고리의 다른 글
[Spring] 더 편리해진 Spring JDBC (0) | 2022.06.29 |
---|---|
[Spring] .gitignore 적용하기 (0) | 2022.06.29 |
[Spring] Scope Proxy (0) | 2022.06.23 |
[Spring] Prototype Bean (0) | 2022.06.23 |
[Spring] RestTemplate 한글 깨짐 해결방법 (0) | 2022.06.22 |
댓글