본문 바로가기
  • 실행력이 모든걸 결정한다
Spring Series/Spring Framework

[Spring] Bean의 id와 name

by 김코더 김주역 2022. 6. 23.
반응형

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

댓글