Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
@Size for length constraints in Spring Boot
📖 Scenario: You are building a simple Spring Boot application to manage user profiles. Each user has a username that must be between 3 and 15 characters long.
🎯 Goal: Create a User class with a username field that uses the @Size annotation to enforce the length constraint. Then, configure a controller to accept user data and validate it.
📋 What You'll Learn
Create a User class with a username field
Use @Size(min = 3, max = 15) on the username field
Create a controller method to accept a User object
Enable validation on the controller method parameter
💡 Why This Matters
🌍 Real World
Length constraints on user input fields are common in web applications to ensure data quality and prevent errors.
💼 Career
Understanding how to use validation annotations like @Size is essential for backend developers working with Spring Boot to build robust APIs.
Progress0 / 4 steps
1
Create the User class with a username field
Create a class called User with a private String field named username.
Spring Boot
Hint
Remember to add getter and setter methods for the username field.
2
Add @Size annotation to username field
Add the @Size(min = 3, max = 15) annotation above the username field in the User class. Also, add the import statement for jakarta.validation.constraints.Size.
Spring Boot
Hint
The @Size annotation controls the allowed length of the string.
3
Create a controller method to accept User data
Create a Spring Boot controller class called UserController with a method createUser that accepts a @RequestBody User user parameter. Add @PostMapping("/users") above the method.
Spring Boot
Hint
Use @RestController on the class and @PostMapping on the method.
4
Enable validation on the User parameter
Add the @Valid annotation before the User user parameter in the createUser method. Also, add the import for jakarta.validation.Valid.
Spring Boot
Hint
The @Valid annotation triggers validation of the User object.
Practice
(1/5)
1. What does the @Size annotation do in Spring Boot validation?
easy
A. It ensures a field is not null.
B. It validates if a number is within a range.
C. It checks if a string or collection length is within specified min and max limits.
D. It checks if a string matches a regular expression.
Solution
Step 1: Understand the purpose of @Size
@Size is used to validate the length of strings or collections, not numeric ranges or null checks.
Step 2: Identify what @Size checks
It uses min and max to set length limits on text or collections.
Final Answer:
It checks if a string or collection length is within specified min and max limits. -> Option C
Quick Check:
@Size validates length = C [OK]
Hint: Remember @Size controls length, not value or null checks [OK]
Common Mistakes:
Confusing @Size with @Min/@Max for numbers
Thinking @Size checks null values
Assuming @Size validates patterns
2. Which of the following is the correct way to use @Size to require a string between 5 and 10 characters?
easy
A. @Size(min=5, max=10)
B. @Size(length=5-10)
C. @Size(minLength=5, maxLength=10)
D. @Size(range={5,10})
Solution
Step 1: Recall correct @Size syntax
The correct attributes are min and max for length limits.
Step 2: Check each option
Only @Size(min=5, max=10) uses valid attribute names and syntax.
Final Answer:
@Size(min=5, max=10) -> Option A
Quick Check:
Use min and max attributes = A [OK]
Hint: Use min and max, not length or range attributes [OK]
Common Mistakes:
Using invalid attribute names like length or range
Trying to pass a range as a string
Confusing @Size with other annotations
3. Given this code snippet:
@Size(min=3, max=6)
private String code;
Which input value will pass validation?
medium
A. "ab"
B. "abcde"
C. "abcdefg"
D. ""
Solution
Step 1: Understand the length limits
The string must have length between 3 and 6 characters inclusive.
Step 2: Check each input length
"ab" length is 2 (too short), "abcdefg" length is 7 (too long), "abcde" length is 5 (valid), "" length is 0 (too short).
Final Answer:
"abcde" -> Option B
Quick Check:
Length between 3 and 6 = "abcde" [OK]
Hint: Count characters; must be between min and max [OK]
Common Mistakes:
Ignoring inclusive limits
Counting characters incorrectly
Assuming empty string passes
4. Identify the error in this code snippet:
@Size(min=2, max=5)
private int number;
medium
A. @Size cannot be applied to primitive types like int.
B. min and max values are reversed.
C. Missing @NotNull annotation.
D. max value should be greater than 10.
Solution
Step 1: Check @Size target types
@Size works on strings, collections, arrays, but not on primitive types like int.
Step 2: Analyze the code
The field is an int, so @Size is invalid here and will cause an error.
Final Answer:
@Size cannot be applied to primitive types like int. -> Option A
Quick Check:
@Size only for strings/collections = D [OK]
Hint: Use @Size only on strings or collections, not primitives [OK]
Common Mistakes:
Applying @Size to numbers
Confusing @Size with @Min/@Max for numbers
Ignoring type compatibility
5. You want to validate a list of usernames where each username must be between 4 and 12 characters. Which is the correct way to apply @Size in your Spring Boot model?
hard
A. @Size(min=4, max=12) private List<@Size(min=4, max=12)> usernames;
B. @Size(min=4, max=12) private String[] usernames;
C. @Size(min=4, max=12) private List<String> usernames;
D. private List<@Size(min=4, max=12) String> usernames;
Solution
Step 1: Understand @Size on collections vs elements
@Size on a collection checks the collection size, not each element's length.
Step 2: Apply @Size to elements inside the collection
To validate each username's length, use @Size on the generic type parameter or element level.
Step 3: Analyze options
private List<@Size(min=4, max=12) String> usernames; correctly applies @Size to each String element in the List.
Final Answer:
private List<@Size(min=4, max=12) String> usernames; -> Option D
Quick Check:
Use @Size on elements for per-item length = D [OK]
Hint: Put @Size on list elements, not just the list itself [OK]