Ошибка создания компонента с именем consumerController: не удалось внедрить зависимости ресурсов - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь подключить API Rest к memcached, используя Spring MVC для установки и получения данных по memcached, которые я получил из API.В настоящее время получаю эту ошибку:

SEVERE: Сбой инициализации контекста org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка создания бина с именем 'consumerController': Неудовлетворенная зависимость, выраженная через поле 'memcachedClient': Нет квалифицирующего бинатипа [net.spy.memcached.MemcachedClient] найден для зависимости [net.spy.memcached.MemcachedClient]: ожидается как минимум 1 компонент, который считается кандидатом на автопровод для этой зависимости.Аннотации зависимостей: {@ org.springframework.beans.factory.annotation.Autowired (обязательно = true)};вложенное исключение - org.springframework.beans.factory.NoSuchBeanDefinitionException: не найден квалифицирующий компонент типа [net.spy.memcached.MemcachedClient] для зависимости [net.spy.memcached.MemcachedClient]: ожидается, что по крайней мере 1 компонент, который квалифицируется как автоматическийдля этой зависимости.Аннотации зависимостей: {@ org.springframework.beans.factory.annotation.Autowired (обязательно = true)}

ConsumerController:

import net.spy.memcached.MemcachedClient;


@RestController
public class consumerController {
    @Autowired
      private MemcachedClient memcachedClient;
    @RequestMapping(value="/queues/{queueName}/thread-counts/{threadCount}", method = RequestMethod.GET)
    public void setThreadCount(@PathVariable String queueName, @PathVariable int threadCount) {
        System.out.println("Queue name is "+queueName);
        System.out.println("Thread count is "+threadCount);     
        //memcachedClient.set(queueName, 0, threadCount);
        memcachedClient.add(queueName, 0, threadCount); //Adding value to memcached
    }

    @RequestMapping(value="/queues/{queueName}/thread-counts", method = RequestMethod.GET)
    public void getThreadCount(@PathVariable String queueName) {
    System.out.println("Queue value is"+queueName);
    int threadCount = (Integer)memcachedClient.get(queueName);//Getting value from memcached
    System.out.println("Thread count for " + queueName + " is " + threadCount);
    }
}

ConsumerConfiguration:

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "msg91.consumers.consumer")
public class consumerConfiguration {

}

ConsumerInitializer:

public class consumerInitializer  extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[] { consumerConfiguration.class };
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return null;
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }

}

Spring-dispatcher-servlet.xml:

<bean id="memcachedClient"
    class="net.spy.memchached.MemchachedClient">
<property name="servers" value="127.0.0.1:11211"/>
<property name="protocol" value="BINARY"/>

Pom.xml:

<dependency>
   <groupId>com.google.code.simple-spring-memcached</groupId>
   <artifactId>spymemcached-provider</artifactId>
   <version>3.2.0</version>
</dependency>
<dependency>
     <groupId>com.google.code.simple-spring-memcached</groupId>
     <artifactId>spring-cache</artifactId>
     <version>3.2.0</version>
</dependency>

Подскажите пожалуйста, что я делаю не так в этом и как устранить эту ошибку

1 Ответ

0 голосов
/ 11 октября 2018

При создании бина вы задаете класс как класс контроллера.Таким образом, вы создаете компонент вашего контроллера вместо MemchachedClient.Измените его на net.spy.memchached.MemchachedClient.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...