|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.mybatis.spring.mapper.MapperScannerConfigurer
public class MapperScannerConfigurer
BeanDefinitionRegistryPostProcessor that searches recursively starting from a base package for
interfaces and registers them as MapperFactoryBean. Note that only interfaces with at
least one method will be registered; concrete classes will be ignored.
This class was a {code BeanFactoryPostProcessor} until 1.0.1 version. It changed to
BeanDefinitionRegistryPostProcessor in 1.0.2. See https://jira.springsource.org/browse/SPR-8269
for the details.
The basePackage property can contain more than one package name, separated by either
commas or semicolons.
This class supports filtering the mappers created by either specifying a marker interface or an
annotation. The annotationClass property specifies an annotation to search for. The
markerInterface property specifies a parent interface to search for. If both properties
are specified, mappers are added for interfaces that match either criteria. By default,
these two properties are null, so all interfaces in the given basePackage are added as
mappers.
This configurer enables autowire for all the beans that it creates so that they are
automatically autowired with the proper SqlSessionFactory or SqlSessionTemplate.
If there is more than one SqlSessionFactory in the application, however, autowiring
cannot be used. In this case you must explicitly specify either an SqlSessionFactory or
an SqlSessionTemplate to use via the bean name properties. Bean names are used
rather than actual objects because Spring does not initialize property placeholders until after
this class is processed.
Passing in an actual object which may require placeholders (i.e. DB user password) will fail.
Using bean names defers actual object creation until later in the startup
process, after all placeholder substituation is completed. However, note that this configurer
does support property placeholders of its own properties. The basePackage
and bean name properties all support ${property} style substitution.
Configuration sample:
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="org.mybatis.spring.sample.mapper" />
<!-- optional unless there are multiple session factories defined -->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>
MapperFactoryBean,
ClassPathMapperScanner| Constructor Summary | |
|---|---|
MapperScannerConfigurer()
|
|
| Method Summary | |
|---|---|
void |
afterPropertiesSet()
|
org.springframework.beans.factory.support.BeanNameGenerator |
getNameGenerator()
Gets beanNameGenerator to be used while running the scanner. |
void |
postProcessBeanDefinitionRegistry(org.springframework.beans.factory.support.BeanDefinitionRegistry registry)
|
void |
postProcessBeanFactory(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory)
|
void |
setAddToConfig(boolean addToConfig)
Same as MapperFactoryBean#setAddToConfig(boolean). |
void |
setAnnotationClass(Class<? extends Annotation> annotationClass)
This property specifies the annotation that the scanner will search for. |
void |
setApplicationContext(org.springframework.context.ApplicationContext applicationContext)
|
void |
setBasePackage(String basePackage)
This property lets you set the base package for your mapper interface files. |
void |
setBeanName(String name)
|
void |
setMarkerInterface(Class<?> superClass)
This property specifies the parent that the scanner will search for. |
void |
setNameGenerator(org.springframework.beans.factory.support.BeanNameGenerator nameGenerator)
Sets beanNameGenerator to be used while running the scanner. |
void |
setProcessPropertyPlaceHolders(boolean processPropertyPlaceHolders)
|
void |
setSqlSessionFactory(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory)
Deprecated. |
void |
setSqlSessionFactoryBeanName(String sqlSessionFactoryName)
Specifies which SqlSessionFactory to use in the case that there is
more than one in the spring context. |
void |
setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate)
Deprecated. |
void |
setSqlSessionTemplateBeanName(String sqlSessionTemplateName)
Specifies which SqlSessionTemplate to use in the case that there is
more than one in the spring context. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public MapperScannerConfigurer()
| Method Detail |
|---|
public void setBasePackage(String basePackage)
You can set more than one package by using a semicolon or comma as a separator.
Mappers will be searched for recursively starting in the specified package(s).
basePackage - base package namepublic void setAddToConfig(boolean addToConfig)
MapperFactoryBean#setAddToConfig(boolean).
addToConfig - MapperFactoryBean.setAddToConfig(boolean)public void setAnnotationClass(Class<? extends Annotation> annotationClass)
The scanner will register all interfaces in the base package that also have the specified annotation.
Note this can be combined with markerInterface.
annotationClass - annotation classpublic void setMarkerInterface(Class<?> superClass)
The scanner will register all interfaces in the base package that also have the specified interface class as a parent.
Note this can be combined with annotationClass.
superClass - parent class@Deprecated public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate)
SqlSessionTemplate to use in the case that there is
more than one in the spring context. Usually this is only needed when you
have more than one datasource.
Use setSqlSessionTemplateBeanName(String) instead
sqlSessionTemplate - public void setSqlSessionTemplateBeanName(String sqlSessionTemplateName)
SqlSessionTemplate to use in the case that there is
more than one in the spring context. Usually this is only needed when you
have more than one datasource.
Note bean names are used, not bean references. This is because the scanner loads early during the start process and it is too early to build mybatis object instances.
sqlSessionTemplateName - Bean name of the SqlSessionTemplate@Deprecated public void setSqlSessionFactory(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory)
SqlSessionFactory to use in the case that there is
more than one in the spring context. Usually this is only needed when you
have more than one datasource.
Use setSqlSessionFactoryBeanName(String) instead.
sqlSessionFactory - public void setSqlSessionFactoryBeanName(String sqlSessionFactoryName)
SqlSessionFactory to use in the case that there is
more than one in the spring context. Usually this is only needed when you
have more than one datasource.
Note bean names are used, not bean references. This is because the scanner loads early during the start process and it is too early to build mybatis object instances.
sqlSessionFactoryName - Bean name of the SqlSessionFactorypublic void setProcessPropertyPlaceHolders(boolean processPropertyPlaceHolders)
processPropertyPlaceHolders - public void setApplicationContext(org.springframework.context.ApplicationContext applicationContext)
setApplicationContext in interface org.springframework.context.ApplicationContextAwarepublic void setBeanName(String name)
setBeanName in interface org.springframework.beans.factory.BeanNameAwarepublic org.springframework.beans.factory.support.BeanNameGenerator getNameGenerator()
public void setNameGenerator(org.springframework.beans.factory.support.BeanNameGenerator nameGenerator)
nameGenerator - the beanNameGenerator to set
public void afterPropertiesSet()
throws Exception
afterPropertiesSet in interface org.springframework.beans.factory.InitializingBeanExceptionpublic void postProcessBeanFactory(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory)
postProcessBeanFactory in interface org.springframework.beans.factory.config.BeanFactoryPostProcessor
public void postProcessBeanDefinitionRegistry(org.springframework.beans.factory.support.BeanDefinitionRegistry registry)
throws org.springframework.beans.BeansException
postProcessBeanDefinitionRegistry in interface org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessororg.springframework.beans.BeansException
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||