Spring注解jar包中的类的问题

在每一个SSH项目中,都会为持久层操作封装一套持久化操作接口,比如:
BaseRepository,BaseDao之类,并针对于这样的接口使用JPA,Hibernate等方式对接口进行相关实现,并能够将其封装成为一个公用的jar包(这里取名为go-persistence。当其它项目要想重用这些API里,只需要将这个包引用到工程中就可以了。下面是一个针对于接口的hibernate实现并使用了spring的HibenateDaoSupport类,部分代码如下


@Repository
@SuppressWarnings({"unchecked", "rawtypes"})
public class EntityRepositorySpringHibernate extends HibernateDaoSupport implements EntityRepository {

@Autowired
public void setSessionFactoryOverride(SessionFactory sessionFactory) {
super.setSessionFactory(sessionFactory);
}

@Override
public <T extends Entity> T save(T entity) {
this.getHibernateTemplate().saveOrUpdate(entity);
return entity;
}
}



在EntityRepositorySpringHibernate类中需要hibernate的SessionFactory工厂类,我们希望在spring容器启动的时候,跟据如下的applicationContexy配置文件中的sesssionFactory,注入到EntityRepositorySpringHibernate中。


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"
>

<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
<property name="configurationClass">
<value>org.hibernate.cfg.AnnotationConfiguration</value>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${jdbc.dialect}</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.jdbc.fetch_size">25</prop>
<prop key="hibernate.jdbc.batch_size">50</prop>
<!-- dev -->
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.generate_statistic">false</prop>
<prop key="hibernate.cache.use_query_cache">false</prop>
<!--代表使用Hibernate的二级缓存-->
<prop key="hibernate.cache.use_second_level_cache">false</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
</bean>
</beans>




并在引用到persistence模块的工程中能够通过注解直接引用EntityRepositorySpringHibernate实例,如:

[code=”java”]
@Repository
public class ContactRepositoryImpl extends EntityRepositorySpringHibernate implements ContactRepository{

@Override
public void addContact(Contact contact) {
this.save(contact);
}

[/code]

在自己写的jar包中使用spring注解方式,需要在导出工程为jar包时选中Add directory entries,如果没有勾选,那么spring将不扫描jar包中的注解。这时需要在配置文件中配置<bean>标签才行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值