использование @Controller, @Service и @Inject в Spring MVC

1

У меня был рабочий контроллер, у которого была одна услуга, как показано ниже.

@Controller
public class FileController 
{
   private FileService   fileService;       // service injected by Spring

   /**
    * constructor which initializes the file service.
    * @param fileService     service used to retrieve a list of files
    */
   @Inject
   public FileController(FileService fileService)
   {
      this.fileService = fileService;
   }

   ...
}

Точно так же у меня была еще одна услуга, которую я также работал и использовал в другом контроллере.

@Controller
public class SearchController 
{
   private SearchService searchService;       // service injected by  Spring

   /**
    * constructor which initializes the search service.
    * @param searchService     service used to search for items
    */
   @Inject
   public SearchController(SearchService searchService)
   {
      this.searchService = searchService;
   }

   ...
}

Обе службы и контроллеры работали нормально.

Затем во время разработки выяснилось, что FileController нуждался в службе поиска, поэтому я изменил FileController как показано ниже.

@Controller
public class FilesController
{
   // data members
   private FileService   fileService;       // service injected by Spring
   private SearchService searchService;     // service injected by Spring

   /**
    * constructor which initializes the file service.
    * @param fileService     service used to retrieve a list of files
    * @param searchService   service used to retrieve a list of items.
    */
   @Inject
   public FilesController(FileService fileService, SearchService searchService)
   {
      this.fileService   = fileService;
      this.searchService = searchService;
   }
   ...
}

Это компилируется просто отлично и развертывается просто отлично, но когда я обращаюсь к представлению, использующему FileController, он взрывается с ошибкой Spring:

org.springframework.beans.factory.BeanCreationException: ошибка при создании компонента с именем "org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping # 0": Инициализация компонента не выполнена; Вложенное исключение - org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка при создании компонента с именем 'filesController', определенным в файле [C:\rw_apps\tomcat\6.0.43-2\webapps\webquery\WEB-INF\classes\com\rockwell_collins\webquery\controller\FilesController.class]: неудовлетворенная зависимость, выраженная через аргумент конструктора с индексом 1 типа [com.rockwell_collins.webquery.service.SearchService]:: Ошибка создания компонента с именем "searchService", определенным в файле [C:\rw_apps\tomcat\6.0.43-2\webapps\webquery\WEB-INF\classes\com\rockwell_collins\webquery\service\SearchService.class]: Ошибка создания бина; Вложенное исключение - java.lang.ExceptionInInitializerError; Вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании компонента с именем "searchService", определенным в файле [C:\rw_apps\tomcat\6.0.43-2\webapps\webquery\WEB-INF\classes\com\rockwell_collins\webquery\service\SearchService.class]: Ошибка создания бина; Вложенное исключение - java.lang.ExceptionInInitializerError

Может ли Spring только вводить одну услугу в контроллер? Я попытался указать "default-autowire" в моем весеннем xml файле и пробовал все возможные значения для него, но ничего не работает.

Теги:
spring
spring-mvc
tomcat

1 ответ

0
Лучший ответ

Как выглядит ваша поисковая служба? У вас есть какой-то статический блок?

ExceptionInInitializerError 'сигнализирует, что в статическом инициализаторе произошло непредвиденное исключение'

  • 0
    Вы совершенно правы. Это была проблема со статическим блоком в классе обслуживания. Спасибо большое за вашу помощь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню