2016-08-02 5 views
0

ich den folgenden Code haben:@ComponentScan nimmt keinen Einfluss

Implementierung von Bean:

package my.persist.services; 
@Component 
public class MyService{ 
} 

Test:

package my.persist.services; 
@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(classes={"other configuration classes", my.persist.services.MyService.class}) 
@ComponentScan(basePackageClasses = {my.persist.services.DummyPlaceHolder.class}) 
public class MyServiceTest extends AbstractJUnit4SpringContextTests { 
     @Autowired 
     MyService service; 
} 

Wenn ich entfernen "my.persist.services. MyService.class "von @ContextConfiguration, der Compiler sagt" Konnte nicht Autowire, keine Bean of ... gefunden ", scheint es die @ComponentScan hat keine Wirkung? Irgendeine Hilfe?

Antwort

0

Anstatt der Komponentensuche für einzelne Klassen funktioniert ein Platzhalterscan Ihres Basispakets?

@ComponentScan(basePackages = {"my.persist.services.*"}) 

Sie bestimmte diejenigen in Ihrem Test ausschließen kann, das heißt, wenn Sie Ihre tatsächliche Umsetzung in Ihrem Test filtern möchten aus, können Sie die folgenden Aktionen durchführen:

@ComponentScan(basePackages = {"my.persist.services.*"}, excludeFilters={ 
      @ComponentScan.Filter(type=FilterType.ASSIGNABLE_TYPE, value=MyService.class)})