ppkarwasz commented on issue #2769:
URL: 
https://github.com/apache/logging-log4j2/issues/2769#issuecomment-3050376973

   Hi @snicoll,
   
   Thanks for reaching out.
   
   > Does this change force us to make the builder public?
   
   No, you’re not required to make the builder public. If you’d prefer to keep 
it package-private, you can suppress the warning using:
   
   ```java
   @SuppressWarnings("log4j.public.setter")
   @PluginBuilderAttribute
   private String name;
   ```
   
   That said, we do recommend making Log4j plugins and their builders `public`, 
for a few reasons:
   
   * **JPMS Compatibility**: In a Java Platform Module System (JPMS) 
environment, reflection on `public` members in exported packages works out of 
the box. In contrast, accessing `package-private` or `private` members requires 
opening the package, which defeats the purpose of encapsulating the plugin 
internals.
   
   * **Reducing DI Complexity**: Starting in Log4j 3.x, we’ve introduced a 
lightweight [dependency injection 
framework](https://logging.apache.org/log4j/3.x/javadoc/log4j-plugins/index.html).
 While it’s intentionally minimal and not intended to replace Spring’s IoC 
container, it has grown increasingly complex due to needing to support various 
reflective access patterns. By enforcing `public` setters, we can streamline 
the implementation and reduce the need for advanced reflection handling.
   
   * **Future Improvements**: Looking ahead, we plan to generate configuration 
classes at build time to improve startup performance. Public, well-structured 
plugins and builders are much easier to use for this purpose.
   
   Certainly! Here's a clearer and more polished version of your note, with 
improved tone, structure, and flow:
   
   ### Note
   
   Since you're working on Spring Boot's compatibility with Log4j 2.25.0 
(spring-projects/spring-boot#46334), you may be interested in the [Log4j 2.25.1 
release 
candidate](https://github.com/apache/logging-log4j2/discussions/3766#discussioncomment-13671473).
 This release primarily addresses integration issues with Spring Boot and other 
environments.
   
   Although the formal voting period has technically ended, I can keep it open 
for a couple more days to give you time to verify that everything works as 
expected on your end—hopefully avoiding the need for a follow-up `2.25.2` 
release shortly after. Let me know what you think.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@logging.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to