We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF or read online on Scribd
You are on page 1/ 8
oarii2023 18.45
[AQuick Guide to Spring @Value | Bacldung
“
A Quick Guide to Spring @Value
Digital terrain data
LE thom
F (httos /adsfreestarcom/?
Lost updated: August 3.20
| written by baeldung htips/ wanubaeldung.com/author/baeldung)
Spring https://awrwbaeldung.com/category/spring) +
Spring Annotations htips.// wirwbaldung com/tag/sping-annotatlons)
Spring Core Basics (https://www baeldung.com/tag/spring-core-basies)
Get started with Spring 5 and Spring Boot 2, through the reference Learn
Spring course:
>> LEARN SPRING (/ls-course-start)
FM LE
preerrsr. SEJOUR
“yng_incontent
htipsifwnww.baeldung,comspring-value-annotaton
veozrtv2023 18.45, A Quick Guide to Spring @Value | Baeldung
“
1. Overview
In this quick tutorial, were going to have a look at the @Value Spring annotation,
‘This annotation can be used for injecting values into fields in Spring-managed beans, and it can be applied at the
field or constructor/method parameter level.
Further reading:
What Is a Spring Bean? (/spring-bean)
‘Aaquick and practical explanation of what a Spring Bean i,
Read more (/spring-boan) +
Using Spring @Value With Defaults (/spring-value-defaults)
A quick and practical que to seting default values when using the Value annotation in Spring
Read more (/spring-value-defaults) -»
2. Setting Up the Application
‘To describe different kinds of usage for this annotation, we need to configure a simple Spring applic
configuration class.
s (https /adsfreestaccom/?
tutm_campaign-branding&iutmmedium-bannerautm -source-baeldung.com&utm.content-baeldung_incontent
Naturally. welllneed a properties fle to define the valuegwe want to inject with the @Value annotation. And so,
welll first need to define a @PropertySource in our configuration class — with the properties file name.
Lets define the properties file
8, Stockage de données rentable pour le
S @ cloud hybride
wee tee
wy .
(https /ads freestarcom/?
hitps:lwww-baeldung.com/spring-value-annatation 28oarii2023 18.45 A Quick Guide to Spring @Value | Baeldung
« trok/tne Fite oO
Ave.fro. 43
priorityshiah
Vistofvatues:
3. Usage Examples
Asa basic and mostly useless example, we can only inject “string value" from the annotation to the field
evalue(steing value") oO
private String stringatue;
Using the @PropertySource annotation allows us to work with values from properties files with the @Value
annotation.
Inthe following example, we get Value got from the fle assigned to the field
private String valueFronrites
| evate(n¥ (value. tron fe)°) oO
We can also set the value from system properties with the same syntax.
Lets assume that we have defined a system property named systemValue
(https /adssreestarcom/?
utm .campaign-brandingutm medium-banner&utm.source-baeldung.com@utmcontent-baeldung.leaderboar
_mvid_2)
value ("staystenvatu
Private String systenalue;
0
Default values can be provided for properties that might not be defined, Here, the value some default willbe
injected
Ifthe same property is defined as a system property and in the properties file, then the system property would be
applied,
‘Suppose we had a property priority defined as a system property with the value System property and defined as
something else in the properties fle. The value would be System property.
| evstwe(4eprorisn) 0
Private String prioritySystemProperty;
‘Sometimes, we need to inject a bunch of values. would be convenient to define them as comma-separated
values for the single property in the properties fle or as a system property and to inject into an array.
Inthe first section, we defined comma-separated values in the listOfVatues of the properts file, so the array
values would be (A: “8: °C
v
htipsifwnww.baeldung,comlspring-value-annotation 38oarii2023 18.45 [AQuick Guide to Spring @Value | Bacldung
“
4. Advanced Examples With SpEL
‘We can also use SpEL expressions to get the value.
Ifwe have a system property named priority. then its value will be applied to the fiel
Ifwe have not defined the system property, then the null value will be assigned,
‘To prevent this, we can provide a default value in the SpEL expression. We get some default value for the field if
the system property is not defined:
Furthermore. we can use a field value from other beans. Suppose we have a bean named someBean with afield
someValue equal to 10. Then, 10 will be assigned to the field
oe *¥(zontean cones tue}*)
private Inceper soneteanstue oO
We can manipulate properties to get a List of values, here. a lst of string values A, 8, and C:
private List veluesl tse
| evatue(“¥(-5(4sx0"Vatues}*-spLteC*, 9) oO
5. Using @Value With Maps
We can also use the @Vatue annotation to inject a Map property.
First, well need to define the property in the ikey: value’ /form in our properties fle
htipsifwnww.baeldung,comlspring-value-annotation 48oarii2023 18.45 [AQuick Guide to Spring @Value | Bacldung
“
Get mare done: SAS Via is 2
prodsetve Al and Anais p
Bs
(https /ads reestarcom/?
vetueslapedkeys "2", key2s 128, keys °3")
Note that the values in the Map must be in single quotes.
Now we can inject this value from the property fle as @ Mags
eine Henan?)
Ifwe need te get the value of a specific key in the Map all we have to do is add the keys name in the expression:
Ifwere not sure whether the Map contains a certain key. we should choose a safer expression that will not throw
an exception but set the value to null when the key is not foun:
value ("#(8{valuesmap) *unknownKey"1}")
Private Integer unkrowrWapkey;
O
\We can also set default values for the properties or keys that might not exist.
private Map unknownMap; LI
value ("¥¢S{vatuessap}{"unkenownkey"} 2: 5}*)
Private Integer unlnownMapkeywithDe aul tVelues
‘Map entries can also be filtered before injection.
Lets assume we need to get only those entries whose values are gteater than one:
ernie 4am (ei 399
We can also use the @Value annotation to inject all current system properties:
htipsifwnww.baeldung,comlspring-value-annotation seoarii2023 18.45 A Quick Guide to Spring @Value | Baeldung
slue(te cysccet cores aU)
Private wapcstring, String> systenProperciesiap;
O
6. Using @Value With Constructor Injection
When we use the @Value annotation, wel not limited to a field injection, We can also use it together with
constructor injection.
Lets see this in practice:
component
Proper tySource("elesspath: values. properties")
public class PriorityProvicer {
private String priority:
autowired
public PriorityProvider (avalue("S{priority:noreal)") String priority) ¢
‘chis.priority = priority;
>
1) standara getter
0
Inthe above example, we inject a priority directly into our PriorityProvide's constructor.
Note that we also provide a default value in case the property isnt found,
7. Using @Value With Setter Injection
Analogous to the constructor injection. we can also use @Value with setter injection.
Lets take a look
component
hropertySource( "classpath:values. properties")
public class CollectienProvider {
private Listestring> values
jan ArrayList<>(;
ahutowired
Fublic votd setvalues(evaive(
‘chis.values.adsATL (values) 5
>
1) standare getter
{05 (ListoFvatues) 'sspLie(" 19") Listestring? values) (
0
We use the SpEL expression to inject a lst of values into the setValues method.
8. Using @Value With Records
Java 14 introduced records V/java-record-keyword! to facilitate the creation of an immutable class. The Spring
framework supports @Value for record injection since version 6.0.6:
htipsifwnww.baeldung,comlspring-value-annotation
oeoarii2023 18.45 ‘A Quick Guide to Spring @Value | Bacidung
“
ecomponent oO
GPropertySource("classpath:values. properties")
public record PriorityRecord(@value("S{prioritysnormat)") String priority) (0
Here, we inject the value directly into the recorcis constructor.
9. Conclusion
Inthis article, we examined the various possibilities of using the @Value annotation with simple properties defined.
in the fle, with system properties, and with properties calculated with SpEL expressions,
As always, the example application js available on the GitHub project
{hitps:/github.com/eugenp/tutorials /tree/master/spring-boot-modules/spring-boot-properties-2).
Get started with Spring 5 and Spring Boot 2, through the Learn Spring
course:
>> THE COURSE (/ls-course-end)
Learning to build your API
with Spring?
Download the E-book (/rest-api-spring-guide)
‘Comments are closed on this article! v
htipsifwnww.baeldung,comlspring-value-annotation 718oarii2023 18.45 [AQuick Guide to Spring @Value | Bacldung
“
‘COURSES
SERIES
‘ABOUT
htipsifwnww.baeldung,comlspring-value-annotation