Spring2.5+IBatis+JPA+Compass 注解应用
新年伊始,开始复习一些旧的知识:
Spring 2.5+Ibatis+JPA+Compass整合应用
使用 lib文件如下:
?
??<classpathentry kind="lib" path="src/commons-dbcp.jar"/>
?<classpathentry kind="lib" path="src/commons-logging.jar"/>
?<classpathentry kind="lib" path="src/commons-pool.jar"/>
?<classpathentry kind="lib" path="src/compass-2.2.0.jar"/>
?<classpathentry kind="lib" path="src/IKAnalyzer.jar"/>
?<classpathentry kind="lib" path="src/lucene-analyzers.jar"/>
?<classpathentry kind="lib" path="src/lucene-core.jar"/>
?<classpathentry kind="lib" path="src/lucene-highlighter.jar"/>
?<classpathentry kind="lib" path="src/lucene-queries.jar"/>
?<classpathentry kind="lib" path="src/lucene-snowball.jar"/>
?<classpathentry kind="lib" path="src/lucene-spellchecker.jar"/>
?<classpathentry kind="lib" path="src/mysql-connector-java-3.2.0-alpha-bin.jar"/>
?
?
在Spring+Ibatis+Compasss整合事必须注意的几点:
(1)Spring和IBatis的事务的整合
(2)IBatis和Compass整合时采用的GpsDevice不同:(在Compass正对JPA,Spring,hibernate,Ibatis的GpsDevice不同配置可能不同)
?
?IBatis配置如下:
?<!--
??关于JPA的配置
?-->
?<bean id="jpaGpsDevice"
??/>
???<property name="selectStatementsIds">
??? <value>select blogid from blog</value>
???</property>
?</bean>
?
橘红色部分不配置的错误如下:
?Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'compassGps' defined in class path resource [spring-search.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: {JpaGpsDevice}: Must set selectStatementsIds property
?at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1336)
?at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:471)
?at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
?at java.security.AccessController.doPrivileged(Native Method)
?at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
?at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
?at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:220)
?at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
?at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
?at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
?at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
?at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729)
?at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:381)
?at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
?at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93)
?at com.vnvtrip.search.ibatis.blog.test.BlogTest.main(BlogTest.java:14)
Caused by: java.lang.IllegalArgumentException: {JpaGpsDevice}: Must set selectStatementsIds property
?at org.compass.gps.device.ibatis.SqlMapClientGpsDevice.doStart(SqlMapClientGpsDevice.java:98)
?at org.compass.gps.device.AbstractGpsDevice.start(AbstractGpsDevice.java:124)
?
其他地方配置不同的框架一样:
?
<!--
????? 根据dataSource和configLocation创建一个SqlMapClient
???? -->
? <bean id="sqlMapClient" value="sql-map-config.xml"/>
????? <property name="dataSource">
???<ref bean="dataSource" />
??</property>
??? </bean>
?<!--
?????? 创建SqlMapClient的模板对象
???? -->
???? <bean id="sqlMapClientTemplate" />
?? </property>
?</bean>
?<bean id="txManager" ref="dataSource"/>
?</bean>
?
?
Compass配置如下:
?
?<!-- 注解事物的應用 -->
?<tx:annotation-driven transaction-manager="txManager" />
?<bean id="jpaGpsDevice"
??/>
???<property name="selectStatementsIds">
??? <value>select blogid from blog</value>
???</property>
?</bean>
?
详细的看源代码:
?
?
?
?
?