[스프링 퀴즈] @Autowired
Spring/etc : 2010. 6. 4. 17:30
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class AutowiredTest {
@Autowired DataSource dataSource;
@Test
public void notNull(){
assertThat(dataSource, is(notNullValue()));
}
}
위와 같은 테스트가 있다. 위 코드가 있는 곳과 같은 패키지에 AutowiredTest-context.xml 이라는 빈 설정 파일을 만들었다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean class="org.springframework.jdbc.datasource.SimpleDriverDataSource"/>
</beans>
1. 이렇게 설정했을 때 테스트는 어떻게 될까? 깨질까? 성공할까?
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean class="org.springframework.jdbc.datasource.SimpleDriverDataSource"/>
<bean class="org.springframework.jdbc.datasource.SimpleDriverDataSource"/>
</beans>
2. 이렇게 설정했다면 어떻게 될까?
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource"/>
<bean id="testDataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource"/>
</beans>
3. 그럼 이건 어떨까?
셋다 맞춘 분에게 물어보고 싶은 질문이 있는데;; 맞추시는 분께 댓글로 질문 드리겠습니다.
'Spring > etc' 카테고리의 다른 글
[스프링 퀴즈] @Autowired (4) | 2010.06.04 |
---|---|
스프링 3.0의 설정 간편화 (0) | 2009.12.23 |
스프링의 로깅 의존성 (2) | 2009.12.08 |
[전자정부 개발프레임워크 교육자료] 표준 프레임워크 개요 PPT 감상문 (6) | 2009.10.27 |
스프링의 이메일 기능 지원과 테스트를 살펴보자 (2) | 2009.07.27 |
What's new in Spring 3.0? (2) | 2009.04.20 |
우와~ 스프링 tc 서버다!! (6) | 2009.04.03 |
스프링 프레임워크 트레이닝 갈까말까 (6) | 2009.03.23 |
REST in Spring 3: @MVC (8) | 2009.03.09 |
STS(Spring Tool Suite) 2.0 RC 버전의 OSGi 개발 툴 (2) | 2009.03.05 |
스프링 3.0 m2 빌드 삽질 중 (4) | 2009.03.04 |
TAG @Autowired
저렇게 해본적이 없어서 확실치는 않지만,

설정파일이나 설정파일 위치에 문제가 없다는 가정하에
("설정파일 위치가 제대로 설정 안돼서 모두 실패" 혹은
"설정파일의 설정이 잘못돼서 모두 실패" 이런거는 아니라고 가정... ㅡ_ㅡ;
이거 잘 기억이 안 나거든요. ^^; )
1. 알아서 타입추론해서 주입돼서 성공
2. 주입하려는 타입의 instance가 하나 이상 존재해서 테스트 하기 전에 DI하면서 에러
3. id가 dataSource인 instance가 주입돼서 성공
SimpleDriverDataSource가 DataSource implementing 하는거 맞죠?
그나저나 혹시 만에 하나 맞더라도 질문은 다음분께 양보하는 미덕을 발휘해 봅니다. :D
Kevin님께서 푸시면 어떡합니다~~ㅋㅋ
원래 드리려고 했던 질문은 왜 id로 먼저 확인안하고 타입으로 먼저 찾아볼까요? 라는 거였는데 집에 오는길에 생각하다가 풀렸습니다.
id 먼저 확인했다가 그 빈이 원하는 타입이 아니면 또 다시 원하는 타입에 해당하는걸로 찾아봐야 할테니 그냥 애초에 타입으로 먼저 찾는게 id로 먼저 찾아보는 것보다 나은 것 같더라구요.
헉! 제가 풀면 안되는거였나요? @_@; 다음 질문이라도 양보해서 다행... (응?ㅡ_ㅡ?)
)
그나저나 맞기는 한건지...ㅡ_ㅡ;
요즘은 @Configuration 위주로 써서요.
xml은 security 쪽이랑, db 관련된 쪽만 쓰는데,
여기서 같은 타입의 객체를 두개이상 만들일이 없어서
가물가물합니다.
(View도 다 @Configuration 에서 만들어 버립니다.
아... component scanning 도 xml 쓰는군요.
@Configuration 에서 같은 타입의 객체를 두개이상
생성 해야 할경우, 따로 설정하기 보다
method 이름을 다르게 하고,
그게 맞게 변수이름을 사용해서 처리하는식으로 써서요.
벌써 @Configuration을 애용하고 계시군요.
얼마전에 트위터인지 버즈에서 링크건 내용 중에 그런게 있더라구요. '사람들은 편한것 보다 익숙한 것을 사용한다.' 였나? 머 그런 비슷한 거였는데.. 그 글을 보면서 공감가는 부분이 많았는데
@Configruation에 대한 댓글을 보다보니 갑자기 그 글귀가 생각나네요.ㅎ
사실 저도 같은 타입 빈을 두개씩 등록해서 사용하는 경우는 거의 드물구요. 위 테스트는 @Autoewired 학습 테스트 정도에 해당하겠네요.
@Autowired가 "타입으로 자동주입" 이라는 생각으로 굳어져있었거든요. 그래서 내심 세번째 경우도 에러가 나지 않을까하고 확인해본것인데 잘 되더라구요.ㅋㅋ