it-swarm.com.de

Java Spring: Wie verwendet man die @ Value-Annotation, um eine `Environment'-Eigenschaft einzufügen?

Verwenden Sie ein Konstrukt wie

@Component
public class SomeClass {

    @Inject
    private Environment env;

    private String key;


    @PostConstruct
    private void init() {

        key = env.getProperty("SOME_KEY_PROPERTY");

    }

    ....
}

es ist möglich, ein Feld mit einer Eigenschaft zuzuordnen.

Gibt es ein kürzeres und kürzeres Formular, um dies zu tun?

27
Abdull
@Component
public class SomeClass {

    @Value("#{environment.SOME_KEY_PROPERTY}")
    private String key;

    ....
}
34
Abdull

Sie sollten dazu in der Lage sein (vorausgesetzt, Sie haben einen PropertySourcesPlaceHolderConfigurer registriert)

@Value("${SOME_KEY_PROPERTY}")
private String key;
34
Biju Kunjummen

Es könnte auch nützlich sein, einenStandardwertanzugeben, falls die Variable nicht definiert ist:

@Value("${some_property:default_value}")
private String key;

Andernfalls erhalten Sie eine Ausnahme, wenn some_property nicht definiert ist.

default_value kann auch leer sein, in diesem Fall verhält es sich so, als wäre some_property optional:

@Value("${some_property:}")
private String key;

(Beachten Sie den Doppelpunkt)

Wenn der Standardwert Sonderzeichen enthält (Punkt, Doppelpunkt usw.), wickeln Sie ihn wie folgt in SpEL ein:

@Value("${some_property:#{'default_value'}}")
private String key;
13
rustyx

Wenn Sie eine Umgebungsvariable als Standardwert hinzufügen müssen.

@Value("${awsId:#{environment.AWS_ACCESS_KEY_ID}}")
@Value("${awsSecret:#{environment.AWS_SECRET_ACCESS_KEY}}")

Dies ist eine Kombination aus zwei vorherigen Antworten.

2
Jose Martinez