You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Do not include the validation starter in web starters by default #19550
We've noticed that many applications are not using the validation features in web applications, while validator libraries on the classpath come with a cost.
We could do the following:
remove the spring-boot-starter-validation dependency from spring-boot-starter-web and spring-boot-starter-webflux
create a new spring-boot-starter-validation-web that brings in the validation dependencies without the tomcat-embed-el which is currently excluded by the web starters
properly document that change in the release notes and the reference docs
I'm surprised to figure out not most projects are not using validations, because all my web apps use them. I had to include this new starter.
I'm wondering what is people using instead?
Reacted by Uno Kim, Durim Kryeziu, Rafal Klys, gaojjx, blowing-in-the-wind, 大胃王, Tadeu Espindola Palermo (CobraDev), Jirka Pinkas, Tomáš Poledný, Christoff Erasmus and 9 more
The rationale behind this decision is not that most applications aren’t using validation, but rather that there is a significant amount of them and that the (startup and runtime) cost associated with the validation starter is far from negligible.
We usually try to strike the right balance between doing as much as possible with the developer’s intent and keeping setups efficient and lightweight. « Not all web applications should use validation and we want to optimize efficiency » is all that you should read into this decision.
Reacted by Fabricio, Stéphane Nicoll, Juan Moreno, Andrii Maliuta, whahn, Uno Kim, Durim Kryeziu, its-gauravr, copbint, Gurkirat Singh Guliani and 2 more
This change caught me by surprise a little bit. In upgrading to 2.3.0, I added the validation API, but not the hibernate impl. My unit tests started covering validation started to fail. Without test coverage, might not have caught this.
Maybe consider failing startup if the API is present, and impl is not?
But jakarta-el is now used for compiling jsp, that doesn't look right too. It is present now as a dependency for tomcat starter, not only for validation starter
I don't know how to resolve it properly...
If validation starter is not used - put tomcat-el as a compile dependency to tomcat starter looks good.
But if validation starter is used - we will have 2 libs with el, from jakarta and tomcat, and it should be resolved by excluding one of them...
It doesn't look nice... I will think about better solution, now I see the only way manual resolving, that's what I did in my project...
Hi. In my case, @Valid not work, in GitHub repository specify that in the newest version of spring "Do not include the validation starter in web starters by default ". Now how can i use the validator @Valid in the restcontrollers
A dependency on spring-boot-starter-validation should be sufficient. If that's not working and you'd like some help in figuring it out, please come and chat on Gitter or ask a question on Stack Overflow.
@jdriver2 To which tip are you referring? The build system shouldn't make any difference and adding a dependency on spring-boot-starter-validation should be sufficient with both Maven and Gradle. As I said above, if that's not working and you'd like some help in figuring it out, please come and chat on Gitter or ask a question on Stack Overflow.
Wanted to point, if you use kotlin, you need to annotate your fields like @field: NotNull @field:NotEmpty @field:NotBlank, without it - validations won't work using kotlin
i come with the same problem.i use the spring-boot-starter-parent v2.7.5,given the spring-boot-start-validation,but the validation never works,who has the answer ,please.
Thanks for getting in touch, but it feels like this is a question that would be better suited to Stack Overflow. As mentioned in the guidelines for contributing, we prefer to use the issue tracker only for bugs and enhancements. Feel free to update this issue with a link to the re-posted question (so that other people can find it) or add some more details if you feel this is a genuine bug.
Activity
bclozel commentedon Jan 10, 2020
We'll do the following:
spring-boot-starter-validationfromspring-boot-starter-webby defaultspring-boot-starter-validationto useorg.glassfish:jakarta.elinstead of the current choice of default implementationWith this change, we don't need to add a new starter and we can consistently use the same el implementation.
ofabricio commentedon May 22, 2020
I'm surprised to figure out not most projects are not using validations, because all my web apps use them. I had to include this new starter.
I'm wondering what is people using instead?
bclozel commentedon May 22, 2020
The rationale behind this decision is not that most applications aren’t using validation, but rather that there is a significant amount of them and that the (startup and runtime) cost associated with the validation starter is far from negligible.
We usually try to strike the right balance between doing as much as possible with the developer’s intent and keeping setups efficient and lightweight. « Not all web applications should use validation and we want to optimize efficiency » is all that you should read into this decision.
springframeworkguru commentedon May 23, 2020
This change caught me by surprise a little bit. In upgrading to 2.3.0, I added the validation API, but not the hibernate impl. My unit tests started covering validation started to fail. Without test coverage, might not have caught this.
Maybe consider failing startup if the API is present, and impl is not?
bclozel commentedon May 23, 2020
@springframeworkguru Any reason why you're not using the
spring-boot-starter-validationinstead of bringing the dependencies manually in your build?springframeworkguru commentedon May 23, 2020
@bclozel - Just didn't know of it, until I saw this thread. I def will now though.
5 remaining items
mykolap commentedon Jul 28, 2020
But jakarta-el is now used for compiling jsp, that doesn't look right too. It is present now as a dependency for tomcat starter, not only for validation starter
mykolap commentedon Jul 28, 2020
See - it is compile dependency for tomcat starter, not only for validation starter...
https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-tomcat/2.3.2.RELEASE
bclozel commentedon Jul 28, 2020
@mykolap if you've got a solution in mind, please submit a PR and we can reconsider this arrangement.
mykolap commentedon Jul 28, 2020
I don't know how to resolve it properly...
If validation starter is not used - put tomcat-el as a compile dependency to tomcat starter looks good.
But if validation starter is used - we will have 2 libs with el, from jakarta and tomcat, and it should be resolved by excluding one of them...
It doesn't look nice... I will think about better solution, now I see the only way manual resolving, that's what I did in my project...
hackthur commentedon Feb 18, 2021
Hi. In my case,
@Validnot work, in GitHub repository specify that in the newest version of spring "Do not include the validation starter in web starters by default ". Now how can i use the validator@Validin the restcontrollersMy Pom.xml
My Entity class:
and my RestController class
wilkinsona commentedon Feb 18, 2021
A dependency on
spring-boot-starter-validationshould be sufficient. If that's not working and you'd like some help in figuring it out, please come and chat on Gitter or ask a question on Stack Overflow.jdriver2 commentedon Apr 16, 2021
what if you are using gradle? This tip is not working. springboot 2.4.4
wilkinsona commentedon Apr 16, 2021
@jdriver2 To which tip are you referring? The build system shouldn't make any difference and adding a dependency on
spring-boot-starter-validationshould be sufficient with both Maven and Gradle. As I said above, if that's not working and you'd like some help in figuring it out, please come and chat on Gitter or ask a question on Stack Overflow.jdriver2 commentedon Apr 16, 2021
i solved the issue. Using gradle, but required me to restart the IDE. Thanks!
avdept commentedon Apr 12, 2022
Wanted to point, if you use kotlin, you need to annotate your fields like
@field: NotNull @field:NotEmpty @field:NotBlank, without it - validations won't work using kotlingabopushups commentedon May 19, 2022
@Arturo0911 Did you find a solution for your issue? I'm facing the same exact problem as you
141319nms commentedon Dec 5, 2022
i come with the same problem.i use the spring-boot-starter-parent v2.7.5,given the spring-boot-start-validation,but the validation never works,who has the answer ,please.
141319nms commentedon Dec 5, 2022
141319nms commentedon Dec 5, 2022
i get
bclozel commentedon Dec 5, 2022
Thanks for getting in touch, but it feels like this is a question that would be better suited to Stack Overflow. As mentioned in the guidelines for contributing, we prefer to use the issue tracker only for bugs and enhancements. Feel free to update this issue with a link to the re-posted question (so that other people can find it) or add some more details if you feel this is a genuine bug.