groo
groo

Reputation: 4438

Usage of Spring @ConfigurationProperties gives nullpointer when running tests, JHipster app

I have implemented a simple file upload routine using Spring Boot ConfigurationProperties annotation so I can load the directory from my YAML configuration file:

Service:

@Service
public class FileSystemStorageService implements StorageService {

private final Logger log = LoggerFactory.getLogger(FileSystemStorageService.class);

private final Path pictureLocation;

@Autowired
public FileSystemStorageService(StorageProperties storageProperties) {
    pictureLocation = Paths.get(storageProperties.getUpload());
}

And the StorageProperties:

@Component
@ConfigurationProperties("nutrilife.meals")
public class StorageProperties {

    private String upload;

    public String getUpload() {
        return upload;
    }

    public void setUpload(String upload) {
        this.upload= upload;
    }
}

In the yaml file I have:

nutrilife:
    meals:
        upload: /$full_path_to_my_upload_dir

This works perfectly in normal Spring Boot runtime but the problem starts when I try to run my integration tests, it throws the error:

java.lang.IllegalStateException: Failed to load ApplicationContext
...
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'fileSystemStorageService' defined in file [/home/mmaia/git/nutrilife/build/classes/main/com/getnutrilife/service/upload/FileSystemStorageService.class]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.getnutrilife.service.upload.FileSystemStorageService]: Constructor threw exception; nested exception is java.lang.NullPointerException
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:279)

...
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.getnutrilife.service.upload.FileSystemStorageService]: Constructor threw exception; nested exception is java.lang.NullPointerException
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:154)

So basically during tests the YAML file configuration looks like it's not being properly picked up. I am new to Spring. How can I fix it?

Upvotes: 0

Views: 2974

Answers (1)

AchillesVan
AchillesVan

Reputation: 4356

try adding the @value annotation :

@Value("upload")
private String upload;

The above answer is valid for application.properties config. it also works with yaml as well.

You may find your correct correct yaml config here : 24.6 Using YAML instead of Properties

Upvotes: 1

Related Questions