springboot⾃定义配置⽂件
  前⾔:如果你⼀点spring的基础没有,建议你不要学习springboot,⾄少先有⼀个spring的项⽬经验或者⾃⼰搭建过spring的项⽬再学习springboot,这样你会发现在spring中搞不懂的,在springboot中得到⼀些答案。springboot的原则是“约定⼤于配置”,所以在使⽤springboot 的时候如果出现问题,没有⼀点基础,解决问题就很困难。
  ⽬标:将spring的容器中的配置:数据库的配置,定时器的配置转换到springboot中,实现spring与springbooot的配置对接。
  数据库的配置转换:
  spring中数据库连接的配置如下
<!--数据库实例-->
<bean id="dataSource" class="org.apachemons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${batis.driver}" />
<property name="url" value="${batis.url}" />
<property name="username" value="${batis.username}" />mybatis和springmvc
<property name="password" value="${batis.password}" />
<!-- 初始化连接⼤⼩ -->
<property name="initialSize" value="10" />
<!-- 连接池最⼤数量 -->
<property name="maxActive" value="1000" />
<!-- 连接池最⼤空闲 -->
<property name="maxIdle" value="30" />
<!-- 连接池最⼩空闲 -->
<property name="minIdle" value="10" />
<!-- 获取连接最⼤等待时间 -->
<property name="maxWait" value="2000" />
</bean>
pringboot中的配置
@Bean(name = "dataSource")
public BasicDataSource myGetDataSource() {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName(driverClassName);
dataSource.setUrl(url);
dataSource.setPassword(passWord);
dataSource.setUsername(userName);
dataSource.setMaxIdle(2);
dataSource.setMaxActive(20);
dataSource.setMaxWait(1000);
dataSource.setInitialSize(2);
//
dataSource.setValidationQuery("SELECT 1");
dataSource.setRemoveAbandoned(true);
dataSource.setTestWhileIdle(true);
dataSource.setTimeBetweenEvictionRunsMillis(30000);
dataSource.setNumTestsPerEvictionRun(30);
dataSource.setMinEvictableIdleTimeMillis(1800000);
return dataSource;
}
spring 中的配置
<!-- spring和MyBatis完美整合,不需要mybatis的配置映射⽂件 -->
<bean id="sqlSessionFactory" class="batis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath:springMVCmybatis/com/my/mapper/*.xml" />
<!-- <property name="typeAliasesPackage" value="del"/> -->
</bean>
 springboot配置sqlSessionFactoryBean,对应上⾯的sping的SqlSessionFactoryBean类
@Bean(name = "sqlSessionFactoryBean")
public SqlSessionFactoryBean myGetSqlSessionFactory(DataSource dataSource) throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
// mapperLocations
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
try {
sqlSessionFactoryBean.Resources("classpath:mapper/*l"));
} catch (IOException e) {
log.info("sqlSessionFactoryBean的setMapperLocations有问题");
e.printStackTrace();
}
// dataSource
sqlSessionFactoryBean.setDataSource(dataSource);
// SqlSessionFactory sessionFactory = Object();
return sqlSessionFactoryBean;
}
 spring中的配置
<bean class="batis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="springMVCmybatis" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>
 springboot中的配置
onfigure;
batis.spring.mapper.MapperScannerConfigurer;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import t.annotation.Configuration;
//<bean class="batis.spring.mapper.MapperScannerConfigurer">
//<property name="basePackage" value="springMVCmybatis" />
//<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
//
//</bean>
@Configuration
// 这个注释是需要在加载MybatisDbConfigure.class之后再加载MapperScanConfig这个类
@AutoConfigureAfter(MybatisDbConfigure.class)
public class MapperScanConfig {
public MapperScannerConfigurer myGetMapperScannerConfigurer() {
MapperScannerConfigurer myMapperScannerConfigurer = new MapperScannerConfigurer();
myMapperScannerConfigurer.setBasePackage("dao");
myMapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactoryBean");
return myMapperScannerConfigurer;
}
}
结论:springboot是通过@Configuration来标注⾃定义配置,配置中使⽤@Bean来添加类作⽤与spring配置中的.xml⽂件作⽤⼀样,两者都是容器的作⽤。
关于这部分配置已经上传到我的上,感兴趣或者不懂得,可以登录查看。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。