@Component public class OSSUtil { private static Logger log = LoggerFactory.getLogger(OSSUtil.class); private static OSSUtil ossUtil; @Autowired private OSSProperties ossProperties; @PostConstruct public void init(){ log.info("初始化开始"); ossUtil = this; ossUtil.ossProperties = this.ossProperties; } private static volatile OSSClient ossClient; public static OSSClient getInstance(){ if(ossClient == null){ ossClient = new OSSClient(ossUtil.ossProperties.getEndpoint(),ossUtil.ossProperties.getAccessKeyId(),ossUtil.ossProperties.getAccessKeySecret()); } return ossClient; }
调用方法ossUtil.ossProperties.getEndpoint() 报空
解决方法:在init方法上加 @PostConstruct注解
@PostConstruct解释:
@PostConstruct修饰的方法会在服务器加载Servle的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行,init()方法之前执行(详见:https://www.cnblogs.com/qingruihappy/p/7861623.html)