У меня был рабочий контроллер, у которого была одна услуга, как показано ниже.
@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 файле и пробовал все возможные значения для него, но ничего не работает.
Как выглядит ваша поисковая служба? У вас есть какой-то статический блок?
ExceptionInInitializerError 'сигнализирует, что в статическом инициализаторе произошло непредвиденное исключение'