# Autowire



## blindmind (28. Mrz 2011)

Hallo zusammen!

Kurze Frage:

Ich habe einen Spring Service Interface UserServive...


```
public interface UserService
{
	User saveUser(User user);
...
}
```

..und eine Implementierung UserServiceImpl...


```
@Service
public class UserServiceImpl implements UserService
{
...
}
```

Wenn ich nun einen JUnit-Test für diesen Service schreibe, bekomme ich folgenden Fehler:


```
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'net.twentyfourseven.blog.service.UserServiceImplTest': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: public net.twentyfourseven.blog.service.UserServiceImpl net.twentyfourseven.blog.service.UserServiceImplTest.userService; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [net.twentyfourseven.blog.service.UserServiceImpl] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
....
```

Wenn ich das dem Service zugrundeliegende Repository teste, ist alles gut, nur beim Service klappt das @Autowire, also eine Schicht höher nicht....

Weiß jemand warum?????


----------



## Noctarius (28. Mrz 2011)

Hast du denn auch den Annotation Scanner aktiviert? Falls nicht musst du im AppContext explizit eine Instanz der Implementierung als Bean erstellen.


----------



## blindmind (28. Mrz 2011)

Wie mach ich das?

Aber wie gesagt, wenn ich das Repository teste, an welches der Service delegiert, funktionierts...Naja, ich schau morgen nochmal, Betriebsblindheit macht sich breit...


----------



## blindmind (28. Mrz 2011)

Ach so, im Test sieht es so aus..


```
@RunWith(SpringJUnit4ClassRunner.class)
@TransactionConfiguration(transactionManager="transactionManager")
@ContextConfiguration(locations={ "file:src/main/webapp/WEB-INF/spring/root-context.xml" })
@Transactional
public class UserServiceImplTest
{
	@Autowired
	public UserService userService;
...
```


----------



## Noctarius (28. Mrz 2011)

Chapter 3. The IoC container


----------



## blindmind (29. Mrz 2011)

Immer noch das gleiche Problem...Es wird kein "matching bean type" für meinen Service gefunden, obwohl vorhanden...???:L


----------



## Niki (29. Mrz 2011)

das package in dem die Bean liegt wird auch gescannt?


----------



## blindmind (29. Mrz 2011)

Das dürfte durch

[XML]<context:component-scan base-package="net.twentyfourseven.blog" />[/XML]

erledigt sein, oder??


----------



## Niki (29. Mrz 2011)

ja sollt passen. versuch mal mit qualifier zu wiren


----------



## blindmind (29. Mrz 2011)

Hat sich gerade erledigt...

Hatte meinen Component-Scan in in der von Eclipse angelegten Datei controllers.xml liegen, und diese nicht im Test angegeben...

Jetzt läufts gut...

Danke für die Hilfe!!

Markus


----------

