java-注入方法/变量:公共还是没有?

许多Java框架允许将用于注入的类成员声明为非公共的.例如,Spring和EJB 3中的注入变量可以是私有的. JPA允许保护持久性类的属性或将其私有化.

我们知道,如果可以的话,最好将方法声明为非公共方法.话虽如此,如果我没记错的话,允许这些框架访问非公共成员仅适用于默认的Java安全管理器.难道不是自定义代码还可以通过调用setAccessible()通过反射来获得对非公共成员的访问权限,这将损害安全性?

哪个问题提出了这个问题:设置注射方法的访问级别时的最佳实践是什么?

最佳答案
通常,一个类需要选择加入持久性机制.例如,Java serialisatoin需要一个类来实现java.io.Serializable.实现Serializable的类有责任确保它们的安全.如果某个库允许通过外部配置文件戳私有,则不应信任它-反射确实很危险,其使用通常很混乱.

当然,如果您确实发现了漏洞,请向相应的小组报告.

相关文章

这篇文章主要介绍了spring的事务传播属性REQUIRED_NESTED的原...
今天小编给大家分享的是一文解析spring中事务的传播机制,相...
这篇文章主要介绍了SpringCloudAlibaba和SpringCloud有什么区...
本篇文章和大家了解一下SpringCloud整合XXL-Job的几个步骤。...
本篇文章和大家了解一下Spring延迟初始化会遇到什么问题。有...
这篇文章主要介绍了怎么使用Spring提供的不同缓存注解实现缓...