2014-04-22 11 views
5

Yay çatısı için yeni. Fasulyeleri yüklerken başvurulan xml dosyalarının listesini öğrenmeye çalışıyorum.İlkbahar projesinde bir fasulyenin yüklendiği kaynağı nasıl öğrenebilirim.

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration("classpath:spring/sample-testcontext.xml") 

public class SampleClass implements ApplicationContextAware { 
    @Autowired 
    ApplicationContext applicationContext; 

    @Test 
    public void testMethod() { 

     for (String beanName : applicationContext.getBeanDefinitionNames()) { 
      System.out.println("BeanName " + beanName); 
     } 
    } 
} 

Ama konfigürasyon fasulye yüklenir dosyaları hangi bilmek istiyorum: ApplicationContextAware olan bir sınıf yazarak

i ile fasulye listesini görmek mümkün.

Say "örnek-testcontext.xml"

<?xml version="1.0" encoding="UTF-8"?> 
<beans:beans xmlns:beans="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:util="http://www.springframework.org/schema/util" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd 
     http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd 
     http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd"> 


    <beans:import resource="classpath*:spring/sample-testOneMorecontext.xml"/> 
</beans:beans> 

Ben fasulye "örnek-testOneMorecontext.xml" ve "örnek-testcontext.xml" olarak yüklenir hangi dosya adlarının listesini bilmek istiyorum içerir.

cevap

4

Neden böyle bir şey tam olarak bu isteyeyim? Iç yüklendikten sonra iç uygulama bu bilgileri bir kaydını tutar emin değilim. Ancak, belirli bir fasulye yüklü edildiği kaynak tanıdığımız bir yolu yoktur. Aynı adı taşıyan birkaç fasülye tanımınız varsa ve hangisinin "kazandı" olduğunu bilmek istiyorsanız bu yararlı olabilir.

seni örnek (bunu Autowiring çünkü btw sen ApplicationContextAware uygulamak gerekmez)

@ContextConfiguration 
@ContextConfiguration("classpath:spring/sample-testcontext.xml") 
public class SampleTest { 

    @Autowired 
    private ConfigurableApplicationContext context; 

    @Test 
    public void foo() { 
     ConfigurableListableBeanFactory beanFactory = context.getBeanFactory(); 
     for (String beanName : context.getBeanDefinitionNames()) { 
      System.out.println(beanName + " --> "+ beanFactory.getBeanDefinition(beanName).getResourceDescription()); 
     } 
    } 
} 

Bu, iç Post işlemci çekirdeği tanımları hariç gibi bir şey (verir geri alma varsayılan uygulama may beanFirst testi (Config olarak adlandırılır) ve beanSecond bir iç sınıfından yüklenmiştir

beanFirst --> class org.SampleTest$Config 
beanSecond --> class path resource [foobar.xml] 

adlı bir dosya yüklendi) otomatik olarak kayıt Sınıf yolunun kökünde foobar.xml.

İlgili konular