为了安全起见,在没有注释扫描的情况下使用了AppConfig.java,并且由于更难绑定而没有通过app-config.xml进行配置,因此我创建了spring-beans实例,如下所示:

@Configuration
public class AppConfig {
  @Bean
  public AddressService addressService(){
    return new AddressService();
  }
}

一切正常,但是如果我想阻止其他人创建AddressService实例怎么办?通常我会声明构造函数为私有,但是编译器给我一个错误,我无法再访问AddressService中的AppConfig私有构造函数!

为了完整起见,这是AddressService:
public final class AddressService {
  private AddressService(){}
}

最佳答案

这是一个可行的解决方案。

@Configuration
public class AppConfig {
    public static class AddressService {
        private AddressService() {}
    }
    @Bean
    public AddressService addressService() {
        return new AddressService();
    }
}

07-25 20:49