2015-06-25 3 views
0

У меня есть приложение, основанное на веб-сервисах, в которых присутствуют несколько классов. Некоторые типы классов: abstract, которые расширены в других классах для определения тела для методов абстрактного класса. Я использовал spring для создания экземпляров классов в контексте xml. Я использовал context:component-scan base-package="com.test.webservices", он просматривал все классы @Component и создавал экземпляр, но не сканировал абстрактный класс.java.lang.InstantiationException с абстрактным классом Использование Conponent-Scan

Теперь мой вопрос здесь в том, что есть решение для сканирования абстрактного класса с использованием компонентного сканирования?

Кодекса как-

@Component 
public abstract class HibernateEntityManager{ ... } 

@Component 
public class HibernateGenericDaoImpl extends HibernateEntityManager{ ... } 

В applicationContext.xml У меня есть

<context:component-scan base-package="com.test.webservices"/> 

, что сканирование всех классов excepts абстрактных классов.

Исключение: -

 

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManager' defined in ServletContext resource [/WEB-INF/classes/ApplicationContext/applicationContext.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.test.webservices.utils.HibernateEntityManager]: Is it an abstract class?; nested exception is java.lang.InstantiationException 
 
+0

Приветствую вас, чтобы переполнение стека. Пожалуйста, прочитайте http://stackoverflow.com/help/how-to-ask о том, как задать хороший вопрос. И соответствующим образом измените свой вопрос. По крайней мере, добавьте трассировку стека ... –

+0

Создайте beans только для конкретного подкласса. См. Http://stackoverflow.com/questions/2921899/spring-abstract-class-and-annotations – Waqar

ответ

1

Ваш абстрактный класс не может быть боб именно потому, что вы не можете создать его экземпляр. Удалите аннотацию из абстрактного класса и используйте ее только в конкретном классе.

+0

Спасибо! В этом случае, как использовать родительский класс child = "" в xml config для родительского абстрактного класса? Это условие заставляет меня, чтобы мой каждый суперкласс должен был быть конкретным классом, если я должен использовать поле parent = "" в xml config. –

+0

Спасибо за комментарий .. –

0

Использование @Component аннотаций при использовании в сочетании с

<context:component-scan base-package="com.inn.webservices"/> 

Spring пытается создать одноэлементные бобы для аннотированных классов. В вашем случае вы должны иметь аннотированный абстрактный класс. Вместо этого разместите аннотацию @Component на классах реализации.

Смежные вопросы