Fernando André
Fernando André

Reputation: 1213

Caused by: NoSuchBeanDefinitionException: No qualifying bean of type xxx expected at least 1 bean which qualifies as autowire candidate

I have the following code bellow:

package far.botshop.backend.controller;

/**
 */
import java.util.logging.Logger;

import far.botshop.backend.storage.StorageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

@Controller
public class FileUploadController {

    private final StorageService storageService;

    @Autowired
    public FileUploadController(StorageService storageService) {
        this.storageService = storageService;
    }

And have the following class created:

package far.botshop.backend.storage;

import org.springframework.boot.context.properties.ConfigurationProperties;

@ConfigurationProperties("storage")
public class StorageProperties {
    /**
     * Folder location for storing files
     */
    private String location = "upload-dir";

    public String getLocation() {
        return location;
    }

    public void setLocation(String location) {
        this.location = location;
    }

}

I believe StorageProperties should be easily found, but for some reason I'm getting this error:

UnsatisfiedDependencyException: Error creating bean with name 'fileSystemStorageService' defined in file [/home/x/workspace/botshop-backend-java/target/classes/far/botshop/backend/storage/FileSystemStorageService.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'far.botshop.backend.storage.StorageProperties' available: expected at least 1 bean which qualifies as autowire candidate.

Any idea?

Upvotes: 2

Views: 7516

Answers (2)

Denis Ismailovski
Denis Ismailovski

Reputation: 321

You are trying to

@Autowired
    public FileUploadController(StorageService storageService) {
        this.storageService = storageService;
    }

but you haven't defined StorageService as Bean.

So you should add @Component annotation or equivalent over the StorageService class.

Upvotes: 2

Praneeth Ramesh
Praneeth Ramesh

Reputation: 3564

Add @Component Annotation over StorageProperties class.

Upvotes: 1

Related Questions