`
duyangsss
  • 浏览: 124143 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

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);
}



在自己写的jar包中使用spring注解方式,需要在导出工程为jar包时选中Add directory entries,如果没有勾选,那么spring将不扫描jar包中的注解。这时需要在配置文件中配置<bean>标签才行。
分享到:
评论
1 楼 ZhaojieSmall 2015-11-18  

相关推荐

Global site tag (gtag.js) - Google Analytics