2017-01-24 8 views
1

Есть ли способ определить класс родителя для аннотированных с @Component. Мы имеем сочетание аннотаций и определений XMLSpring @ Компонент с родителем

@Component 
public class BaseClass extends SuperClass 
{ 
} 

/** 
* This bean is defined in the XML and made as abstract 
*/ 
public abstract class SuperClass extends VerySuperClass 
{ 
} 

/** 
* This bean is defined in the XML and made as abstract 
*/ 
public abstract class VerySuperClass 
{ 
    protected IEmployeeDAO employeeDAO; 
    protected ITableDAO tableDAO; 
} 

Проблема здесь с аннотацией и не унаследует его родительские определенные свойства, которые становятся утратившим в BaseClass.java.

Я знаю, что если мы определили как XML-компонент, это сработает, но если есть способ сказать его родительский элемент через Annotation.

Заранее спасибо

+0

Не ясно, о чем вы спрашиваете. Вы пытаетесь внедрить bean-компонент в 'employeeDAO' и' tableDAO'? Являются ли они аннотированы с помощью '@ Autowired'? – alexbt

+0

Бит «VerySuperClass» определен в applicationContext как компонент стиля XML, поэтому его свойства employeeDAO и tableDAO также определены в «applicationContext». Когда я обращаюсь к «BaseClass», эти 2 свойства, которые находятся в «VerySuperClass», также должны быть доступны, но которые возвращаются как null. – murthy

+0

'VerySuperClass' не может быть bean-компонентом, поскольку он является абстрактным. Единственным компонентом является «BaseClass». Вам нужно ввести 'employeeDAO' и' tableDAO' в 'BaseClass' – alexbt

ответ

1

Ваш VerySuperClass должен Autowire на объекты DAO, чтобы эти экземпляры.

public abstract class VerySuperClass { 

    @Autowired 
    protected IEmployeeDAO employeeDAO; 

    @Autowired 
    protected ITableDAO tableDAO; 
} 

Теперь BaseClass боб вы можете получить доступ к VerySuperClass бобы.

Я создал образец удара для вашего лучшего понимания.

https://github.com/avinashroy/spring.di.componentHierarchy

+0

Я не проверял аннотацию Autwired, но DAO вводятся через XML для компонента «VerySuperclass». Этот компонент указан как абстрактный. Если бобы (DAO) вводятся либо через XML, либо в Annotation, он должен работать одинаково – murthy

+0

Я обновил свой ответ с помощью ссылки рабочего примера. – Avinash

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