Le printemps n'a pas Pu Résoudre espace réservé
Je suis assez nouveau pour le printemps donc excusez-moi si c'est une question stupide. Lorsque j'essaie de lancer un programme, j'obtiens l'erreur suivante: java.lang.IllegalArgumentException: Could not resolve placeholder 'appclient' in string value [${appclient}]
. L'erreur est renvoyée lorsque le code suivant est exécuté:
package ca.virology.lib2.common.config.spring.properties;
import ca.virology.lib2.config.spring.PropertiesConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.PropertySource;
@Configuration
@Import({PropertiesConfig.class})
@PropertySource("${appclient}")
public class AppClientProperties {
private static final Logger log = LoggerFactory.getLogger(AppClientProperties.class);
{
//this initializer block will execute when an instance of this class is created by Spring
log.info("Loading AppClientProperties");
}
@Value("${appclient.port:}")
private int appClientPort;
@Value("${appclient.host:}")
private String appClientHost;
public int getAppClientPort() {
return appClientPort;
}
public String getAppClientHost() {
return appClientHost;
}
}
Un fichier de propriété appelée appclient.properties
existe dans le dossier des ressources avec les informations de l'hôte et le port. Je ne suis pas sûr de l'endroit où le "${appclient}"
est définie, si elle est à tous. Peut-être qu'il n'est même pas définie et qui est à l'origine du problème. Ai-je besoin de changer la "${appclient}"
à quelque chose comme "{classpath:/appclient.properties}"
ou ai-je raté quelque chose?
- Vous pouvez référencer la PropertySource utilisant classpath sûr: docs.printemps.io/printemps/docs/actuel/javadoc de l'api/org/...
- J'étais en train d'essayer de lancer ce programme, le nom de 'B' à l'intérieur d'un autre programme, appelé "A". Apparemment, lorsque vous exécutez le programme B individuellement, il obtient le
${appclient}
valeur en tant que programme de l'argument; toutefois, cela n'est pas arrivé lorsque j'essaie d'exécuter B à partir de A et a provoqué l'erreur que je recevais.
Vous devez vous connecter pour publier un commentaire.
Vous ne lisez pas les propriétés de fichier correctement. Le propertySource devez passer le paramètre:
file:appclient.properties
ouclasspath:appclient.properties
. Modifier l'annotation:Cependant je ne sais pas ce que votre
PropertiesConfig
fichier contient, comme vous importez aussi. Idéalement, le@PropertySource
annotation devrait s'y trouvaient.Si vous utilisez Printemps 3.1 et au-dessus, vous pouvez utiliser quelque chose comme...
Vous pouvez aussi passer par la configuration xml comme...
Dans les versions antérieures.
Pour les propriétés qui doivent être gérés à l'extérieur de la GUERRE:
Par exemple, si à l'intérieur de l'application.yml sont
name
etid
Ensuite, vous pouvez créer bean lors de l'exécution à l'intérieur de xml printemps
Si votre fichier de configuration se trouve dans un autre chemin que le chemin de classe, vous pouvez ajouter le chemin du fichier de configuration en tant que système de propriété: