logging-log4j2 icon indicating copy to clipboard operation
logging-log4j2 copied to clipboard

Replace field injection with setter injection in `3.x`

Open ppkarwasz opened this issue 1 year ago • 2 comments

As issue #2766 shows, there are still some Log4j plugin builders that don't have setters for all their configuration attributes.

Since field injection becomes more problematic in newer Java version, I believe we should add the missing setters and make sure all new attributes come with a public setter.

Therefore I propose:

  • to modify the annotation processor in 2.x to fail if a plugin builder attribute does not have a public setter (or at least a wither).
  • fix the compilation errors in 2.x.

Regarding 3.x I would prefer to remove field injection completely from log4j-plugins and use builders and setter injection everywhere. IMHO our DI subsystem does not need to have all the features of a fully-fledged DI. Obviously we might still need field injection if we want to support all the existing 2.x plugins, but I would still love a 200 KiB dependency injection system.

ppkarwasz avatar Jul 25 '24 10:07 ppkarwasz