-
Notifications
You must be signed in to change notification settings - Fork 41.7k
Description
#46944 and 635e766 introduced some changes that are, in my opinion, negating some of the benefits of the modularization and are a step in wrong direction.
Prior to that commit, spring-boot-tomcat would only pull in the necessary Tomcat dependencies (tomcat-embed-core) but now it also pulls in tomcat-embed-el and tomcat-embed-websocket that are not needed by many applications. This goes against some of the promises of modularization.
Additionally, runtime modules introduced by that commit are in reality starter modules (as they hold no actual code) pretending to be actual modules. This sets a bad precedent, as it raises questions about what qualifies as a module vs a starter.
I didn't review the full codebase to whether there are other occurrences of this pattern, but my expectation around modules would be that they:
- hold code that integrates given technology in Spring Boot
- transitively pull in only minimal dependencies using appropriate dependency configuration while declaring non-essential ones as optional
- are combined with other dependencies (based on some opinion) in starters
I understand the goal of the #46944 was to make WAR deployments easier, but it shouldn't be done at the expense of other use cases. Did you perhaps consider having dedicated starters that hold opinion about WAR deployments?
I focused only on spring-boot-tomcat in this issue, but analogous concerns apply to spring-boot-jetty.