2010-05-04 14 views

risposta

4

No, non è possibile iniettare un valore a un campo statico dal proprio contesto XML.

Se è possibile modificare la classe, sono disponibili le seguenti scelte semplici:

  • rimuovere il modificatore static e aggiungono @ Inject/@ Autowire sopra il campo
  • aggiungere un/setter metodo di costruzione/init.

Altrimenti, è possibile farlo con il supporto per la configurazione Java di Spring.

Un esempio:

La classe Demo con il campo statico e un metodo di JUnit che afferma che il contenitore Primavera inietta il valore desiderato nel campo statico:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration("test-context.xml") 
public class Demo { 

    public static String fieldOne; 

    @Test 
    public void testStaticField() { 
     assertEquals("test", fieldOne);  
    } 
} 

Aggiungere lo spazio dei nomi contesto al tuo applicationContext e il componente-scan elemento:

<context:component-scan base-package="com.example" /> 

Aggiungi il bean con il campo statico come il presente:

@Configuration 
public class JavaConfig { 

    @Bean 
    public Demo demo() { 
     Demo.fieldOne = "test"; 

     return new Demo(); 
    } 
} 

In questo caso, la classe JavaConfig deve trovarsi nel pacchetto com.example come dichiarato nell'elemento component-scan.

Problemi correlati