原本是在applicationContext.xml中配置的Dao层,现在项目重构,需要在代码中使用注解配置Spring管理对象
<!-- 配置Session工厂 -->
<bean name="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="hibernateProperties">
<props>
<!-- 必选配置 -->
<prop key="hibernate.dialect" >org.hibernate.dialect.MySQLDialect</prop>
<!-- 可选配置 -->
<prop key="hibernate.show_sql" >true</prop>
<prop key="hibernate.format_sql" >true</prop>
<prop key="hibernate.hbm2ddl.auto" >update</prop>
</props>
</property>
<!-- 引入orm元数据,指定orm元数据所在的包路径,spring会自动读取包中的所有配置 -->
<property name="mappingDirectoryLocations" value="classpath:com/lzj/domain"></property>
</bean>
<!-- 配置CustomerDao -->
<bean name="customerDao" class="com.lzj.dao.impl.CustomerDaoImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
现在userDao在注解中配置,但是userDao中没有SessionFactory属性,SessionFactory是在父类HibernateDaoSupport中的
提供2种方法
1.
@Repository("customerDao")
public class CustomerDaoImpl extends BaseDaoImpl<Customer> implements CustomerDao{
@Resource(name="sessionFactory")
private SessionFactory sessionFactory;
@PostConstruct
private void initialize() {
setSessionFactory(sessionFactory);
}
2.
@Repository("customerDao")
public class CustomerDaoImpl extends BaseDaoImpl<Customer> implements CustomerDao{
@Resource(name="sessionFactory")
private void setSF(SessionFactory sf){
setSessionFactory(sf);
}
}
思想都是一样的,想办法调用父类的setSessionFactory方法