詳解Java的MyBatis框架與Spring框架整合中的映照器注入。本站提示廣大學習愛好者:(詳解Java的MyBatis框架與Spring框架整合中的映照器注入)文章只能為提供參考,不一定能成為您想要的結果。以下是詳解Java的MyBatis框架與Spring框架整合中的映照器注入正文
MyBatis-Spring許可你在Service Bean中注入映照器。當應用映照器時,就像挪用DAO那樣來挪用映照器便可以了,然則此時你就不須要停止任何DAO完成的編碼,由於MyBatis會為你停止。
應用注入的映照器,你的代碼就不會湧現任何MyBatis-Spring依附和MyBatis依附。在我們的運用中有如許一個簡略的映照器。你也應當曉得映照器僅僅是一個接口:
public interface UserMapper { User getUser(String userId); }
這是你應用MyBatis-Spring來創立映照器的方法:
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property name="sqlSessionFactory" ref="sqlSessionFactory" /> <property name="mapperInterface" value="sample.UserMapper" /> </bean>
如今你的映照器曾經預備在Service對象中注入了:
<bean id="fooService" class="sample.FooServiceImpl"> <property name="userMapper" ref="userMapper"/> </bean>
注:映照器接口全類名與映照器xml設置裝備擺設文件的namespace是對應的。
關於MapperFactoryBean
MapperFactoryBean創立的署理類完成了映照器接口(如上例:UserMapper),而且注入到運用法式中。由於署理創立在運轉情況中,那末指定的映照器必需是一個接口。而不是一個詳細的完成類。
沒有需要在Spring的XML設置裝備擺設文件中注冊一切的映照器。相反,你可使用一個MapperScannerConfigurer,它將會查找類途徑下的映照器並主動將它們創立成MapperFactoryBeans。要創立MapperScannerConfigurer,可以在Spring的設置裝備擺設中添加以下代碼:
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <propery name="basePackage" value="org.mybatis.spring.sample.mapper"/> </bean>
basePackage屬性是讓你為映照器接口文件設置根本的包途徑。你可使用分號或逗號作為分隔符設置多於一個的包途徑。每一個映照器將會在指定的包途徑中遞歸地被搜刮到。
留意,沒有需要去指定SqlSessionFactory或SqlSessionTemplate,由於MapperScannerConfigurer將會創立MapperFactoryBean,以後主動拆卸。然則,假如你應用了一個以上的DataSource(是以,也是多個的SqlSessionFactory),那末主動拆卸能夠會掉效。這類情形下,你可使用sqlSessionFactory或sqlSessionTemplate屬性來設置准確的工場/模板。
MapperScannerConfigurer支撐過濾由指定的創立接口或注解創立映照器。annotationClass屬性指定了要尋覓的注解稱號。markerInterface屬性指定了要尋覓的父接口。假如二者都被指定了,參加到接口中的映照器會婚配兩種尺度。默許情形下,這兩個屬性都是null,所以在基包中給定的一切接口可以作為映照器加載。
被發明的映照器將會應用Spring對主動偵測組件默許的定名戰略來定名。也就是說,假如沒有發明注解,它就會應用映照器的非年夜寫的非完整限制類名。然則假如發明了@Component或JSR-330@Named注解,它會獲得稱號。