J'ai été me casser la tête sur celui-ci. Pas sûr de ce que je suis absent. Je n'arrive pas à obtenir l' @Value
annotations de travailler dans un pur java configuré printemps application(non web)
@Configuration
@PropertySource("classpath:app.properties")
public class Config {
@Value("${my.prop}")
String name;
@Autowired
Environment env;
@Bean(name = "myBean", initMethod = "print")
public MyBean getMyBean(){
MyBean myBean = new MyBean();
myBean.setName(name);
System.out.println(env.getProperty("my.prop"));
return myBean;
}
}
La propriété de fichier ne contient qu' my.prop=avalue
Le haricot est comme suit:
public class MyBean {
String name;
public void print() {
System.out.println("Name: " + name);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
La variable d'environnement imprime la valeur correctement, l' @Value
ne le sont pas.avalue
Name: ${my.prop}
La classe principale juste initialise le contexte.
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(Config.class);
Cependant, si j'utilise
@ImportResource("classpath:property-config.xml")
avec cet extrait
<context:property-placeholder location="app.properties" />
puis il fonctionne très bien. Bien sûr, de l'environnement renvoie null
.