我想知道Spring DI如何与Abstract类一起使用。 例如,请看下面的两个样本:
道层:
public abstract class BaseDaoImpl<T extends ShoppingCartEntity> implements BaseDao<T> {
@Autowired
protected SessionFactory sessionFactory;
private Class<T> entityClass;
public BaseDaoImpl(Class<T> entityClass) {
super();
this.entityClass = entityClass;
}
//common dao layer methods like getAll(),save(entity) etc
}
我还没有使用@Repository("baseDao")
注释标记BaseDaoImpl,但仍然可以在sessionFactory实例上注入@Autowired
依赖项。
服务层:
@Service("baseService")
public abstract class BaseServiceImpl implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Autowired
private DaoProvider daoProvider;
//other fields
}
这里我将BaseService标记为抽象,并且还使用了@Service
注释,它将BaseService类注册为服务层的Spring Bean组件。
现在,我有两个问题:
如果一个类是抽象的,那么Spring如何从中创建一个bean呢?
如果某个类未标记任何spring bean组件
注释(如@Component,@Repository,@Service or @Conroller
)
我们是否应该能够对这些依赖关系进行自动连接
类?(就像我的daoLayer基类,它不是一个spring bean
组件,但我仍然可以注入
@Autowired
protected SessionFactory sessionFactory;