Spring Boot 依赖注入错误收集

1、NullPointerException

public class AliOSSUtils{
	private AliOSSUtilsProperties aliOSSUtilsProperties;
	    // 报错!!!!!!!!!!!
	String endpoint = aliOSSUtilsProperties.getEndpoint();
	String accessKeyId = aliOSSUtilsProperties.getAccessKeyId();
	String accessSecret = aliOSSUtilsProperties.getAccessKeySecret();
	String bucketName = aliOSSUtilsProperties.getBucketName();
}

在Java中,声明类的成员并在声明时直接赋值是合法的。

但在Spring Boot中,Bean的注入是在类实例化之后进行的,而不是在类定义之前。
当Spring容器实例化类的对象时,它会检查类的依赖项,并将相应的依赖项注入到类的成员变量中

当在类的成员变量声明处直接使用aliOSSUtilsProperties的属性访问方法时,可能会导致空指针异常。这是因为在该位置,aliOSSUtilsProperties尚未被注入,因此其值为null,无法调用其方法。

要解决这个问题,可以将对aliOSSUtilsProperties属性的访问和初始化操作移动到方法内部或构造函数中。例如:

private AliOSSUtilsProperties aliOSSUtilsProperties;
private String endpoint;
private String accessKeyId;
private String accessSecret;
private String bucketName;

public void initializeProperties() {
    endpoint = aliOSSUtilsProperties.getEndpoint();
    accessKeyId = aliOSSUtilsProperties.getAccessKeyId();
    accessSecret = aliOSSUtilsProperties.getAccessKeySecret();
    bucketName = aliOSSUtilsProperties.getBucketName();
}

或者,在构造函数中进行初始化:

private AliOSSUtilsProperties aliOSSUtilsProperties;
private String endpoint;
private String accessKeyId;
private String accessSecret;
private String bucketName;

public MyClass(AliOSSUtilsProperties aliOSSUtilsProperties) {
    this.aliOSSUtilsProperties = aliOSSUtilsProperties;
    endpoint = aliOSSUtilsProperties.getEndpoint();
    accessKeyId = aliOSSUtilsProperties.getAccessKeyId();
    accessSecret = aliOSSUtilsProperties.getAccessKeySecret();
    bucketName = aliOSSUtilsProperties.getBucketName();
}

这样,在实例化类的对象时,aliOSSUtilsProperties会被正确注入,并且可以在方法或构造函数中访问它的属性。请确保在使用这些属性之前,aliOSSUtilsProperties已经被正确注入,并且不为null

2、使用@AutoWired注入@Mapper警告报红

可以正常运行,报警告是因为AutoWired是Spring的注解它找不到它规定的那些容器,可以把AutoWired改成Resource,Resource是java自己的注解不会去找Bean

你可能感兴趣的:(spring,boot,后端,java)