Skip to content

Change tomcat and jetty runtime modules to starters #48175

@vpavic

Description

@vpavic

#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.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions