Caused by: NoSuchBeanDefinitionException: No quali

2019-07-11 21:03发布

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?

2条回答
倾城 Initia
2楼-- · 2019-07-11 21:21

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.

查看更多
We Are One
3楼-- · 2019-07-11 21:34

Add @Component Annotation over StorageProperties class.

查看更多
登录 后发表回答