我经常public在 bean 初始化代码中看到带有注释的方法的修饰符@PostConstruct和@PreDestroy.
这不会破坏封装吗?毕竟,除了 spring 的上下文之外,这些方法不应该对任何人可用。
做他们不是更好private吗?是否允许使用public,为什么?
我经常public在 bean 初始化代码中看到带有注释的方法的修饰符@PostConstruct和@PreDestroy.
这不会破坏封装吗?毕竟,除了 spring 的上下文之外,这些方法不应该对任何人可用。
做他们不是更好private吗?是否允许使用public,为什么?
不,这不是问题。
方法被标记
@PostConstruct并且@PreDestroy是类的公共接口的一部分,因为只有在它们的帮助下,您才能正确地创建或销毁对象,这意味着它们必须可供类的客户使用。而且你通常有不止一个客户——第二个是测试。一个重要的注意事项
@PostConstruct:如果需要使用这个注解,那么这已经是设计中出现问题的标志。值得注意的是,不变量的初始化和设置应该在构造函数中进行。也就是说,您需要通过构造函数使用依赖注入,而根本不使用@PostConstruct通过setter的依赖注入,这可能会导致对象初始化不完整。