1.配置文件applicationContext.xml,让boot启动时,加载配置xml。@ImportResource,让boot主动加载我们的bean。例如:
@ImportResource(locations
= "classpath*:/applicationContext.xml")
其实用boot,可以不用在项目工程里加载spring的上下文的,这里是为了方便说明,我手动建立了spring的上下文。如果不配置启动会报错,这个跟Spring
Boot的启动机制有关,boot在启动启动类以后,才会根据类文件间的依赖去加载spring的bean类,boot本身并不会自动去读取xml文件,所以boot是不知道我们在xml里注入的bean的,所以肯定找不到datasource和mybatis配置,所以,我们要在StartApp类里增加一个注解@@ImportResource,让boot主动加载我们的bean。
如果在applicationContext.xml中配置了mybatis,这时启动还是会报错,因为boot本着自动配置的原则,会帮你去加载mybatias的自动配置类,但自动配置类又是用的包内自有的mapper,导致找不到包,这时我们排除一下自动配置:
@SpringBootApplication(exclude = MybatisAutoConfiguration.class)
application.context.xml如下
<!-- 数据源配置, 使用Tomcat JDBC连接池 -->
<bean
id="dataSource"
class="org.apache.tomcat.jdbc.pool.DataSource"
destroy-method="close">
<!-- Connection Info -->
<property
name="driverClassName"
value="${jdbc.driver}" />
<property
name="url"
value="${jdbc.url}" />
<property
name="username"
value="${jdbc.username}" />
<property
name="password"
value="${jdbc.password}" />
<!-- Connection Pooling Info -->
<property
name="maxActive"
value="10" />
<property
name="maxIdle"
value="50" />
<property
name="minIdle"
value="0" />
<property
name="defaultAutoCommit"
value="false" />
</bean>
<!-- MyBatis配置 -->
<bean
id="sqlSessionFactory"
class="org.mybatis.spring.SqlSessionFactoryBean">
<property
name="dataSource"
ref="dataSource" />
<!-- 自动扫描entity目录, 省掉Configuration.xml里的手工配置 -->
<property
name="typeAliasesPackage"
value="com.hjf.boot.api.domain" />
<!-- 显式指定Mapper文件位置 -->
<property
name="mapperLocations"
value="classpath:/mybatis/*Mapper.xml" />
</bean>
<!-- 扫描basePackage下所有以@MyBatisRepository标识的 接口-->
<bean
class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property
name="basePackage"
value="com.hjf.boot.demo.boot_mybatis.domain" />
<property
name="annotationClass"
value="com.hjf.boot.demo.boot_mybatis.dao.Mapper"/>
</bean>
2.通过class来进行配置文件,也就是写一个java的配置代码
方法:
第1步:建立配置类文件config。这里需要三个类文件:
DataSourceConfig —>datasource源配置
MyBatisConfig —> 配置sqlSessionFactory
MyBatisMapperScannerConfig —> 配置mapperScannerConfigurer
这里需要说明一下:最后一个配置因为依赖前两个,需要最后一个加载,否则会报错。
具体代码可以参考。http://blog.csdn.net/mickjoust/article/details/51646658